
reg_errcode_t re_compile_internal(regex_t *preg,char *pattern,size_t length,reg_syntax_t syntax)

{
  re_token_t *prVar1;
  undefined1 *puVar2;
  byte bVar3;
  int iVar4;
  uchar *puVar5;
  bin_tree_storage_t *pbVar6;
  re_dfa_t *prVar7;
  re_token_t token;
  bin_tree_t **ppbVar8;
  regex_t *preg_00;
  re_token_t *prVar9;
  re_state_table_entry *prVar10;
  size_t sVar11;
  byte *pbVar12;
  uchar *puVar13;
  anon_union_4_5_a39f51ca_for_opr aVar14;
  reg_errcode_t rVar15;
  bin_tree_t *pbVar16;
  Idx *pIVar17;
  Idx *pIVar18;
  re_node_set *prVar19;
  re_node_set *prVar20;
  size_t *__ptr;
  Idx IVar21;
  bin_tree_t *pbVar22;
  wint_t wVar23;
  re_dfastate_t *prVar24;
  __int32_t **pp_Var25;
  re_dfa_t *dfa;
  bin_tree_storage_t *pbVar26;
  char cVar27;
  uint extraout_ECX;
  uint uVar28;
  int iVar29;
  uint uVar30;
  int iVar31;
  int iVar32;
  size_t sVar33;
  bin_tree_t *pbVar34;
  re_bitset_ptr_t pbVar35;
  uint *puVar36;
  int iVar37;
  size_t __size;
  bin_tree_t *pbVar38;
  size_t sVar39;
  uint uVar40;
  uint uVar41;
  re_hashval_t rVar42;
  bin_tree_t *pbVar43;
  int unaff_EDI;
  undefined4 *puVar44;
  byte *pbVar45;
  uchar **ppuVar46;
  int in_GS_OFFSET;
  bool bVar47;
  bool bVar48;
  byte bVar49;
  undefined8 uVar50;
  reg_syntax_t syntax_00;
  anon_union_4_5_a39f51ca_for_opr in_stack_ffffff44;
  reg_errcode_t *in_stack_ffffff48;
  re_dfa_t *local_b0;
  uint local_9c;
  int local_98;
  int local_94;
  reg_errcode_t err;
  reg_errcode_t err_2;
  re_token_t current_token;
  Idx *local_78;
  re_string_t regexp;
  
  bVar49 = 0;
  uVar50 = __x86_get_pc_thunk_di();
  puVar13 = (uchar *)((ulonglong)uVar50 >> 0x20);
  preg_00 = (regex_t *)uVar50;
  dfa = preg_00->buffer;
  iVar4 = *(int *)(in_GS_OFFSET + 0x14);
  preg_00->field_0x1c = preg_00->field_0x1c & 0x90;
  err = _REG_NOERROR;
  preg_00->syntax = (reg_syntax_t)preg;
  preg_00->used = 0;
  preg_00->re_nsub = 0;
  if (preg_00->allocated < 0x88) {
    dfa = (re_dfa_t *)realloc(dfa,0x88);
    if (dfa == (re_dfa_t *)0x0) {
      rVar15 = _REG_ESPACE;
      goto LAB_000282f4;
    }
    preg_00->allocated = 0x88;
    preg_00->buffer = dfa;
  }
  puVar44 = (undefined4 *)((uint)&dfa->nodes_alloc & 0xfffffffc);
  preg_00->used = 0x88;
  dfa->nodes = (re_token_t *)0x0;
  dfa->subexp_map = (Idx *)0x0;
  uVar28 = (uint)((int)dfa + (0x88 - (int)puVar44)) >> 2;
  for (; uVar28 != 0; uVar28 = uVar28 - 1) {
    *puVar44 = 0;
    puVar44 = puVar44 + (uint)bVar49 * -2 + 1;
  }
  dfa->str_tree_storage_idx = 0x1f;
  if (extraout_ECX < 0xaaaaaaa) {
    sVar39 = extraout_ECX + 1;
    dfa->nodes_alloc = sVar39;
    prVar9 = (re_token_t *)malloc(sVar39 * 8);
    dfa->nodes = prVar9;
    if (extraout_ECX == 0) {
      rVar42 = 0;
      uVar28 = 1;
    }
    else {
      uVar28 = 1;
      do {
        uVar28 = uVar28 * 2;
      } while (uVar28 <= extraout_ECX);
      rVar42 = uVar28 - 1;
    }
    prVar10 = (re_state_table_entry *)calloc(0xc,uVar28);
    dfa->state_hash_mask = rVar42;
    dfa->state_table = prVar10;
    sVar11 = __ctype_get_mb_cur_max();
    dfa->mb_cur_max = sVar11;
    pbVar12 = (byte *)nl_langinfo(0xe);
    if ((((*pbVar12 & 0xdf) == 0x55) && ((pbVar12[1] & 0xdf) == 0x54)) &&
       ((pbVar12[2] & 0xdf) == 0x46)) {
      bVar47 = pbVar12[3] < 0x2d;
      bVar48 = pbVar12[3] == 0x2d;
      iVar29 = 2;
      pbVar12 = pbVar12 + bVar48 + 3;
      pbVar45 = (byte *)(unaff_EDI + 0x504b);
      do {
        if (iVar29 == 0) break;
        iVar29 = iVar29 + -1;
        bVar47 = *pbVar12 < *pbVar45;
        bVar48 = *pbVar12 == *pbVar45;
        pbVar12 = pbVar12 + (uint)bVar49 * -2 + 1;
        pbVar45 = pbVar45 + (uint)bVar49 * -2 + 1;
      } while (bVar48);
      if ((!bVar47 && !bVar48) == bVar47) {
        dfa->field_0x58 = dfa->field_0x58 | 4;
      }
    }
    bVar3 = dfa->field_0x58;
    dfa->field_0x58 = bVar3 & 0xf7;
    if (1 < dfa->mb_cur_max) {
      if ((bVar3 & 4) == 0) {
        pbVar35 = (re_bitset_ptr_t)calloc(0x20,1);
        dfa->sb_char = pbVar35;
        if (pbVar35 == (re_bitset_ptr_t)0x0) goto LAB_000282d0;
        iVar29 = 0;
        do {
          uVar28 = iVar29 * 8;
          iVar32 = 0;
          do {
            while( true ) {
              wVar23 = btowc(uVar28);
              if (wVar23 != 0xffffffff) break;
              if ((uVar28 & 0xffffff80) == 0) {
LAB_000283fc:
                dfa->field_0x58 = dfa->field_0x58 | 8;
              }
LAB_00028404:
              iVar32 = iVar32 + 1;
              uVar28 = uVar28 + 1;
              if (iVar32 == 0x20) goto LAB_00028460;
            }
            puVar36 = (uint *)((int)dfa->sb_char + iVar29);
            *puVar36 = *puVar36 | 1 << ((byte)iVar32 & 0x1f);
            if ((uVar28 & 0xffffff80) != 0) goto LAB_00028404;
            if (wVar23 != uVar28) goto LAB_000283fc;
            iVar32 = iVar32 + 1;
            uVar28 = uVar28 + 1;
          } while (iVar32 != 0x20);
LAB_00028460:
          iVar29 = iVar29 + 4;
        } while (iVar29 != 0x20);
      }
      else {
        dfa->sb_char = (re_bitset_ptr_t)(unaff_EDI + 0x58c9);
      }
    }
    if ((dfa->nodes != (re_token_t *)0x0) && (dfa->state_table != (re_state_table_entry *)0x0)) {
      err = _REG_NOERROR;
      puVar5 = preg_00->translate;
      ppuVar46 = &regexp.mbs;
      for (iVar29 = 0x13; iVar29 != 0; iVar29 = iVar29 + -1) {
        *ppuVar46 = (uchar *)0x0;
        ppuVar46 = ppuVar46 + (uint)bVar49 * -2 + 1;
      }
      uVar28 = (uint)preg & 0x400000;
      regexp.icase = uVar28 != 0;
      regexp.mbs_allocated = puVar5 != (uchar *)0x0 || uVar28 != 0;
      iVar29 = dfa->mb_cur_max;
      regexp.map_notascii = (byte)dfa->field_0x58 >> 3 & 1;
      regexp.is_utf8 = (byte)dfa->field_0x58 >> 2 & 1;
      regexp.raw_mbs = puVar13;
      regexp.len = extraout_ECX;
      regexp.trans = puVar5;
      regexp.mb_cur_max = iVar29;
      if (extraout_ECX != 0) {
        aVar14.idx = re_string_realloc_buffers(&regexp,sVar39);
        if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;
        iVar29 = dfa->mb_cur_max;
      }
      if (regexp.mbs_allocated != '\0') {
        puVar13 = regexp.mbs;
      }
      regexp.mbs = puVar13;
      if (uVar28 == 0) {
        if (iVar29 < 2) {
          iVar29 = regexp.bufs_len;
          regexp.valid_raw_len = regexp.bufs_len;
          if (puVar5 != (uchar *)0x0) {
            if (regexp.len <= regexp.bufs_len) {
              regexp.bufs_len = regexp.len;
            }
            iVar29 = regexp.valid_len;
            regexp.valid_raw_len = regexp.valid_len;
            if (regexp.valid_len < regexp.bufs_len) {
              puVar13[regexp.valid_len] =
                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];
              iVar32 = regexp.valid_len + 1;
              iVar29 = regexp.bufs_len;
              regexp.valid_raw_len = regexp.bufs_len;
              if (iVar32 < regexp.bufs_len) {
                do {
                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];
                  iVar32 = iVar32 + 1;
                  iVar29 = regexp.bufs_len;
                } while (regexp.bufs_len != iVar32);
              }
            }
          }
        }
        else {
          build_wcs_buffer(&regexp);
          iVar29 = regexp.valid_len;
        }
      }
      else {
        if (1 < iVar29) {
          do {
            aVar14.idx = build_wcs_upper_buffer(&regexp);
            if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;
            iVar29 = regexp.valid_len;
            if (((int)extraout_ECX <= regexp.valid_raw_len) ||
               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;
            rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2);
          } while (rVar15 == _REG_NOERROR);
          local_b0 = preg_00->buffer;
          err = rVar15;
          goto LAB_00027c60;
        }
        local_b0 = (re_dfa_t *)regexp.len;
        if (regexp.bufs_len <= regexp.len) {
          local_b0 = (re_dfa_t *)regexp.bufs_len;
        }
        if (regexp.valid_len < (int)local_b0) {
          pp_Var25 = __ctype_toupper_loc();
          while( true ) {
            if (regexp.trans == (uchar *)0x0) {
              puVar13[regexp.valid_len] =
                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];
            }
            else {
              puVar13[regexp.valid_len] =
                   (uchar)(*pp_Var25)
                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];
            }
            if (local_b0 == (re_dfa_t *)(regexp.valid_len + 1)) break;
            regexp.valid_len = regexp.valid_len + 1;
            puVar13 = regexp.mbs;
          }
        }
        else {
          local_b0 = (re_dfa_t *)regexp.valid_len;
        }
        regexp.valid_raw_len = (Idx)local_b0;
        iVar29 = regexp.valid_raw_len;
      }
LAB_00027d86:
      regexp.valid_len = iVar29;
      err = _REG_NOERROR;
      prVar7 = preg_00->buffer;
      preg_00->re_nsub = 0;
      prVar7->syntax = (reg_syntax_t)preg;
      syntax_00 = 0x27db7;
      iVar29 = peek_token(&current_token,&regexp,(uint)preg | 0x800000);
      regexp.cur_idx = regexp.cur_idx + iVar29;
      pbVar16 = parse_reg_exp((re_string_t *)preg,(regex_t *)0x0,(re_token_t *)&err,syntax_00,
                              in_stack_ffffff44.idx,in_stack_ffffff48);
      if ((err != _REG_NOERROR) && (pbVar16 == (bin_tree_t *)0x0)) {
        dfa->str_tree = (bin_tree_t *)0x0;
        local_b0 = preg_00->buffer;
        goto LAB_00027c60;
      }
      iVar29 = prVar7->str_tree_storage_idx;
      if (iVar29 == 0x1f) {
        pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);
        if (pbVar26 != (bin_tree_storage_t *)0x0) {
          iVar32 = 1;
          iVar37 = 4;
          iVar31 = 0x18;
          pbVar26->next = prVar7->str_tree_storage;
          iVar29 = 0;
          prVar7->str_tree_storage = pbVar26;
          goto LAB_00027e0d;
        }
        local_b0 = preg_00->buffer;
        if (pbVar16 != (bin_tree_t *)0x0) {
          pbVar43 = (bin_tree_t *)0x0;
          bVar47 = true;
          goto LAB_00027e67;
        }
      }
      else {
        pbVar26 = prVar7->str_tree_storage;
        iVar32 = iVar29 + 1;
        iVar31 = iVar29 * 0x20 + 0x18;
        iVar37 = iVar29 * 0x20 + 4;
LAB_00027e0d:
        prVar7->str_tree_storage_idx = iVar32;
        pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;
        pbVar26->data[iVar29].left = (bin_tree_t *)0x0;
        pbVar26->data[iVar29].right = (bin_tree_t *)0x0;
        *(undefined1 *)((int)&pbVar26->data[0].parent + iVar31) = 2;
        puVar2 = &pbVar26->data[iVar29].token.field_0x6;
        *puVar2 = *puVar2 & 0xf3;
        pbVar43 = (bin_tree_t *)((int)pbVar26->data + iVar37 + -4);
        bVar47 = pbVar43 == (bin_tree_t *)0x0;
        pbVar26->data[iVar29].first = (bin_tree_t *)0x0;
        local_b0 = preg_00->buffer;
        pbVar26->data[iVar29].next = (bin_tree_t *)0x0;
        pbVar26->data[iVar29].node_idx = -1;
        pbVar22 = pbVar43;
        if (pbVar16 != (bin_tree_t *)0x0) {
LAB_00027e67:
          iVar29 = prVar7->str_tree_storage_idx;
          if (iVar29 == 0x1f) {
            pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);
            if (pbVar26 == (bin_tree_storage_t *)0x0) goto LAB_00028d28;
            iVar32 = 1;
            local_94 = 0x18;
            local_98 = 4;
            pbVar26->next = prVar7->str_tree_storage;
            iVar29 = 0;
            prVar7->str_tree_storage = pbVar26;
          }
          else {
            iVar32 = iVar29 + 1;
            local_98 = iVar29 * 0x20 + 4;
            local_94 = iVar29 * 0x20 + 0x18;
            pbVar26 = prVar7->str_tree_storage;
          }
          prVar7->str_tree_storage_idx = iVar32;
          pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;
          pbVar22 = (bin_tree_t *)((int)pbVar26->data + local_98 + -4);
          pbVar26->data[iVar29].left = pbVar16;
          pbVar26->data[iVar29].right = pbVar43;
          *(undefined1 *)((int)&pbVar26->data[0].parent + local_94) = 0x10;
          puVar2 = &pbVar26->data[iVar29].token.field_0x6;
          *puVar2 = *puVar2 & 0xf3;
          pbVar26->data[iVar29].first = (bin_tree_t *)0x0;
          pbVar26->data[iVar29].next = (bin_tree_t *)0x0;
          pbVar26->data[iVar29].node_idx = -1;
          bVar47 = (bool)(bVar47 | pbVar22 == (bin_tree_t *)0x0);
          pbVar16->parent = pbVar22;
          if (pbVar43 != (bin_tree_t *)0x0) {
            pbVar43->parent = pbVar22;
          }
        }
        prVar7 = local_b0;
        if (!bVar47) {
          dfa->str_tree = pbVar22;
          sVar11 = local_b0->nodes_alloc * 4;
          __size = local_b0->nodes_alloc * 0xc;
          pIVar17 = (Idx *)malloc(sVar11);
          local_b0->nexts = pIVar17;
          pIVar18 = (Idx *)malloc(sVar11);
          local_b0->org_indices = pIVar18;
          prVar19 = (re_node_set *)malloc(__size);
          local_b0->edests = prVar19;
          prVar20 = (re_node_set *)malloc(__size);
          local_b0->eclosures = prVar20;
          if ((((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&
              (prVar19 != (re_node_set *)0x0)) && (prVar20 != (re_node_set *)0x0)) {
            sVar39 = preg_00->re_nsub;
            __ptr = (size_t *)malloc(sVar39 * 4);
            local_b0->subexp_map = (Idx *)__ptr;
            pbVar16 = local_b0->str_tree;
            if (__ptr != (size_t *)0x0) {
              sVar33 = 0;
              if (sVar39 != 0) {
                do {
                  __ptr[sVar33] = sVar33;
                  sVar33 = sVar33 + 1;
                } while (sVar33 != sVar39);
              }
              cVar27 = (pbVar16->token).field_0x4;
              pbVar43 = pbVar16->left;
              pbVar22 = pbVar16;
LAB_00028010:
              pbVar38 = pbVar22;
              pbVar22 = pbVar43;
              pbVar34 = pbVar22;
              if (cVar27 == '\x04') {
                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);
                (pbVar38->token).opr = aVar14;
                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);
                goto joined_r0x00028003;
              }
              if (cVar27 != '\x11') goto joined_r0x00028003;
              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;
              goto LAB_00028038;
            }
            goto LAB_0002809c;
          }
          err = _REG_ESPACE;
          goto LAB_00027c60;
        }
      }
LAB_00028d28:
      err = _REG_ESPACE;
      dfa->str_tree = (bin_tree_t *)0x0;
      goto LAB_00027c60;
    }
  }
LAB_000282d0:
  err = _REG_ESPACE;
  goto LAB_000282d8;
code_r0x00028148:
  cVar27 = (pbVar22->token).field_0x4;
  pbVar34 = pbVar22->left;
  pbVar43 = pbVar34;
  if (cVar27 == '\x11') {
    iVar29 = (pbVar22->token).opr.idx;
    pbVar38->left = pbVar34;
    if (pbVar34 != (bin_tree_t *)0x0) {
      pbVar34->parent = pbVar38;
    }
    __ptr[iVar29] = __ptr[(pbVar38->token).opr.idx];
    if (iVar29 < 0x20) {
      local_b0->used_bkref_map = local_b0->used_bkref_map & ~(1 << ((byte)iVar29 & 0x1f));
    }
joined_r0x00028003:
    if (pbVar34 == (bin_tree_t *)0x0) {
LAB_00028038:
      pbVar43 = (bin_tree_t *)0x0;
      while ((pbVar34 = pbVar38->right, pbVar34 == pbVar43 || (pbVar34 == (bin_tree_t *)0x0))) {
        ppbVar8 = &pbVar38->parent;
        pbVar43 = pbVar38;
        pbVar38 = *ppbVar8;
        if (*ppbVar8 == (bin_tree_t *)0x0) {
          if (sVar39 == 0) goto LAB_00028074;
          sVar33 = *__ptr;
          if (sVar33 == 0) goto LAB_0002806d;
          goto LAB_0002809c;
        }
      }
    }
    cVar27 = (pbVar34->token).field_0x4;
    pbVar43 = pbVar34->left;
    pbVar22 = pbVar34;
  }
  goto LAB_00028010;
  while (__ptr[sVar33] == sVar33) {
LAB_0002806d:
    sVar33 = sVar33 + 1;
    if (sVar33 == sVar39) goto LAB_00028074;
  }
LAB_0002809c:
  do {
    pbVar22 = pbVar16->left;
    pbVar43 = pbVar16;
    while (pbVar16 = pbVar22, pbVar16 != (bin_tree_t *)0x0) {
      pbVar43 = pbVar16;
      pbVar22 = pbVar16->left;
    }
    pbVar16 = pbVar43->right;
  } while (pbVar16 != (bin_tree_t *)0x0);
  pbVar22 = (bin_tree_t *)0x0;
  pbVar16 = (bin_tree_t *)0x0;
  do {
    current_token.opr.sbcset = (re_bitset_ptr_t)0x0;
    if ((pbVar22 == (bin_tree_t *)0x0) || ((pbVar22->token).field_0x4 != '\x11')) {
      if (pbVar16 != (bin_tree_t *)0x0) {
        cVar27 = (pbVar16->token).field_0x4;
        goto joined_r0x000280c8;
      }
    }
    else {
      pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar22);
      pbVar43->left = pbVar16;
      if (pbVar16 != (bin_tree_t *)0x0) {
        pbVar16->parent = pbVar43;
      }
      pbVar16 = pbVar43->right;
      if (pbVar16 != (bin_tree_t *)0x0) {
        cVar27 = (pbVar16->token).field_0x4;
joined_r0x000280c8:
        if (cVar27 == '\x11') {
          pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16);
          pbVar43->right = pbVar16;
          if (pbVar16 != (bin_tree_t *)0x0) {
            pbVar16->parent = pbVar43;
          }
        }
      }
      aVar14 = current_token.opr;
      if (current_token.opr.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;
    }
    pbVar34 = pbVar43->parent;
    if (pbVar34 == (bin_tree_t *)0x0) {
      pbVar16 = local_b0->str_tree;
      goto LAB_000281a0;
    }
    pbVar16 = pbVar34->right;
    if ((pbVar16 != (bin_tree_t *)0x0) && (pbVar43 != pbVar16)) goto LAB_0002809c;
    pbVar22 = pbVar34->left;
    pbVar43 = pbVar34;
  } while( true );
LAB_00028074:
  free(__ptr);
  local_b0->subexp_map = (Idx *)0x0;
  pbVar16 = local_b0->str_tree;
  goto LAB_0002809c;
LAB_000281a0:
  do {
    do {
      pbVar43 = pbVar16;
      pbVar16 = pbVar43->left;
    } while (pbVar43->left != (bin_tree_t *)0x0);
    pbVar16 = pbVar43->right;
  } while (pbVar43->right != (bin_tree_t *)0x0);
  do {
    if ((pbVar43->token).field_0x4 == '\x10') {
      IVar21 = pbVar43->left->node_idx;
      pbVar43->first = pbVar43->left->first;
      pbVar43->node_idx = IVar21;
LAB_000281c7:
      pbVar22 = pbVar43->parent;
    }
    else {
      pbVar43->first = pbVar43;
      token._4_4_ = in_stack_ffffff48;
      token.opr.sbcset = in_stack_ffffff44.sbcset;
      IVar21 = re_dfa_add_node(local_b0,token);
      pbVar43->node_idx = IVar21;
      if (IVar21 == -1) goto LAB_00028330;
      if ((pbVar43->token).field_0x4 != '\f') goto LAB_000281c7;
      *(re_context_type *)&local_b0->nodes[IVar21].field_0x4 =
           *(uint *)&local_b0->nodes[IVar21].field_0x4 & 0xfffc00ff |
           ((pbVar43->token).opr.ctx_type & 0x3ff) << 8;
      pbVar22 = pbVar43->parent;
    }
    if (pbVar22 == (bin_tree_t *)0x0) {
      pbVar16 = local_b0->str_tree;
      cVar27 = (pbVar16->token).field_0x4;
      pbVar43 = pbVar16->left;
      pbVar22 = pbVar16;
      if (cVar27 == '\v') goto LAB_00028283;
      goto LAB_00028250;
    }
    pbVar16 = pbVar22->right;
    bVar47 = pbVar43 == pbVar16;
    pbVar43 = pbVar22;
  } while (pbVar16 == (bin_tree_t *)0x0 || bVar47);
  goto LAB_000281a0;
LAB_00028250:
  if (cVar27 == '\x10') {
    pbVar34 = pbVar22->right;
    pbVar43->next = pbVar34->first;
    pbVar34->next = pbVar22->next;
  }
  else {
    if (pbVar43 != (bin_tree_t *)0x0) {
      pbVar43->next = pbVar22->next;
    }
    pbVar34 = pbVar22->right;
    if (pbVar34 == (bin_tree_t *)0x0) {
      if (pbVar43 == (bin_tree_t *)0x0) {
        pbVar43 = pbVar22->parent;
        while( true ) {
          pbVar34 = pbVar43;
          if (pbVar34 == (bin_tree_t *)0x0) goto LAB_00028398;
          pbVar43 = pbVar34->right;
          if ((pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22)) break;
          pbVar43 = pbVar34->parent;
          pbVar22 = pbVar34;
        }
      }
    }
    else {
      if (pbVar43 == (bin_tree_t *)0x0) {
        pbVar43 = pbVar34;
      }
      pbVar34->next = pbVar22->next;
    }
  }
  while( true ) {
    cVar27 = (pbVar43->token).field_0x4;
    ppbVar8 = &pbVar43->left;
    pbVar22 = pbVar43;
    pbVar43 = *ppbVar8;
    if (cVar27 != '\v') break;
LAB_00028283:
    pbVar43->next = pbVar22;
  }
  goto LAB_00028250;
  while (pbVar22 = pbVar34->parent, pbVar43 = pbVar34, pbVar34->parent != (bin_tree_t *)0x0) {
    while( true ) {
      pbVar34 = pbVar22;
      pbVar16 = pbVar34->right;
      bVar47 = pbVar16 == pbVar43;
      if (bVar47 || pbVar16 == (bin_tree_t *)0x0) break;
LAB_00028398:
      do {
        bVar49 = (pbVar16->token).field_0x4;
        if (bVar49 < 0x11) {
                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))
                             ();
          return rVar15;
        }
        if ((bVar49 & 8) != 0) {
                    /* WARNING: Subroutine does not return */
          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,
                        (char *)(unaff_EDI + 0x5895));
        }
        local_b0->nexts[pbVar16->node_idx] = pbVar16->next->node_idx;
        pbVar43 = pbVar16->left;
        pbVar22 = pbVar16;
        pbVar16 = pbVar43;
      } while (pbVar43 != (bin_tree_t *)0x0);
    }
  }
  bVar48 = false;
  sVar39 = 0;
  do {
    sVar33 = sVar39;
    if (local_b0->nodes_len == sVar39) goto LAB_000284fa;
LAB_000284dd:
    while( true ) {
      if (local_b0->eclosures[sVar33].nelem != 0) goto code_r0x000284f2;
      aVar14.idx = calc_eclosure_iter((re_node_set *)&current_token,local_b0,sVar33,true);
      if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;
      sVar39 = sVar33 + 1;
      if (local_b0->eclosures[sVar33].nelem != 0) break;
      free(local_78);
      sVar33 = sVar39;
      bVar48 = bVar47 || pbVar16 == (bin_tree_t *)0x0;
      if (local_b0->nodes_len == sVar39) goto LAB_00028505;
    }
  } while( true );
code_r0x000284f2:
  sVar39 = sVar33 + 1;
  sVar33 = sVar39;
  if (local_b0->nodes_len == sVar39) {
LAB_000284fa:
    if (!bVar48) {
      if (((((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0)) ||
          ((local_b0->field_0x58 & 1) == 0)) && (local_b0->nbackref == 0)) goto LAB_00028860;
      prVar19 = (re_node_set *)malloc(sVar39 * 0xc);
      local_b0->inveclosures = prVar19;
      if (prVar19 != (re_node_set *)0x0) {
        uVar40 = 0;
        if (sVar39 != 0) goto LAB_0002875b;
        goto LAB_00028860;
      }
      err = _REG_ESPACE;
      local_b0 = preg_00->buffer;
      goto LAB_00027c60;
    }
LAB_00028505:
    sVar33 = 0;
    bVar48 = false;
  }
  goto LAB_000284dd;
LAB_00028330:
  aVar14.idx = _REG_ESPACE;
LAB_00028335:
  local_b0 = preg_00->buffer;
  err = (reg_errcode_t)aVar14;
LAB_00027c60:
  pbVar26 = local_b0->str_tree_storage;
  while (pbVar26 != (bin_tree_storage_t *)0x0) {
    pbVar6 = pbVar26->next;
    free(pbVar26);
    pbVar26 = pbVar6;
  }
  local_b0->str_tree_storage = (bin_tree_storage_t *)0x0;
  local_b0->str_tree_storage_idx = 0x1f;
  local_b0->str_tree = (bin_tree_t *)0x0;
  free(local_b0->org_indices);
  local_b0->org_indices = (Idx *)0x0;
  free(regexp.wcs);
  free(regexp.offsets);
  if (regexp.mbs_allocated != '\0') {
    free(regexp.mbs);
  }
  goto LAB_000282d8;
LAB_0002897d:
  do {
    uVar30 = uVar40 + uVar28 >> 1;
    if (iVar32 <= local_78[uVar30]) {
      if (uVar30 <= uVar28) break;
      uVar41 = uVar28 + uVar30 >> 1;
      iVar31 = local_78[uVar41];
      uVar40 = uVar30;
      uVar30 = uVar41;
      while (iVar32 <= iVar31) {
        if (uVar30 <= uVar28) goto LAB_000289b4;
        uVar41 = uVar28 + uVar30 >> 1;
        uVar40 = uVar30;
        uVar30 = uVar41;
        iVar31 = local_78[uVar41];
      }
    }
    uVar28 = uVar30 + 1;
  } while (uVar28 < uVar40);
LAB_000289b4:
  if (local_78[uVar28] == iVar32) {
LAB_00028908:
    iVar29 = iVar29 + 1;
    aVar14 = (anon_union_4_5_a39f51ca_for_opr)current_token._4_4_;
    if ((int)current_token._4_4_ <= iVar29) goto LAB_000289f2;
    goto LAB_00028917;
  }
  rVar15 = re_node_set_merge((re_node_set *)&current_token,dfa->eclosures + iVar32);
  if (rVar15 != _REG_NOERROR) goto LAB_00028a39;
  iVar29 = 1;
  aVar14 = (anon_union_4_5_a39f51ca_for_opr)current_token._4_4_;
  if ((int)current_token._4_4_ < 2) goto LAB_000289f2;
  goto LAB_00028917;
LAB_0002875b:
  while( true ) {
    prVar19 = prVar19 + uVar40;
    prVar19->alloc = 0;
    prVar19->nelem = 0;
    prVar19->elems = (Idx *)0x0;
    uVar30 = local_b0->nodes_len;
    if (uVar30 <= uVar40 + 1) break;
    prVar19 = local_b0->inveclosures;
    uVar40 = uVar40 + 1;
  }
  if (uVar30 != 0) {
    local_9c = 0;
    local_b0 = (re_dfa_t *)local_b0->eclosures;
    do {
      pIVar17 = ((re_node_set *)((int)local_b0 + local_9c * 0xc))->elems;
      if (0 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem) {
        iVar29 = 0;
        do {
          prVar19 = prVar7->inveclosures + pIVar17[iVar29];
          iVar32 = prVar19->nelem;
          pIVar18 = prVar19->elems;
          if (prVar19->alloc == iVar32) {
            prVar19->alloc = (iVar32 + 1) * 2;
            pIVar18 = (Idx *)realloc(pIVar18,(iVar32 + 1) * 8);
            if (pIVar18 == (Idx *)0x0) goto LAB_00028330;
            local_b0 = (re_dfa_t *)prVar7->eclosures;
            iVar32 = prVar19->nelem;
            prVar19->elems = pIVar18;
          }
          iVar29 = iVar29 + 1;
          prVar19->nelem = iVar32 + 1;
          pIVar18[iVar32] = local_9c;
        } while (iVar29 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem);
        uVar30 = prVar7->nodes_len;
      }
      local_9c = local_9c + 1;
    } while (local_9c < uVar30);
  }
LAB_00028860:
  err = _REG_NOERROR;
  if ((((byte)dfa->field_0x58 >> 2 & uVar28 == 0) != 0) && (preg_00->translate == (uchar *)0x0)) {
    if (dfa->nodes_len != 0) {
      if (0xc < (byte)dfa->nodes->field_0x4) {
                    /* WARNING: Subroutine does not return */
        abort();
      }
                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +
                         unaff_EDI + 0xc669))();
      return rVar15;
    }
    dfa->mb_cur_max = 1;
    dfa->field_0x58 = (0 < dfa->nbackref) * '\x02' | dfa->field_0x58 & 0xf9;
  }
  iVar29 = dfa->str_tree->first->node_idx;
  dfa->init_node = iVar29;
  prVar19 = dfa->eclosures;
  aVar14 = (anon_union_4_5_a39f51ca_for_opr)prVar19[iVar29].nelem;
  if (aVar14.idx < 1) {
    current_token.opr.sbcset = (re_bitset_ptr_t)0x0;
    current_token._4_4_ = 0;
    local_78 = (Idx *)0x0;
    err_2 = _REG_NOERROR;
LAB_000289f2:
    prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,0);
    dfa->init_state = prVar24;
    rVar15 = err_2;
    if (prVar24 != (re_dfastate_t *)0x0) {
      if ((char)prVar24->field_0x34 < '\0') {
        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,1);
        dfa->init_state_word = prVar24;
        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,2);
        dfa->init_state_nl = prVar24;
        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,6);
        dfa->init_state_begbuf = prVar24;
        rVar15 = err_2;
        if (((dfa->init_state_word == (re_dfastate_t *)0x0) ||
            (dfa->init_state_nl == (re_dfastate_t *)0x0)) || (prVar24 == (re_dfastate_t *)0x0))
        goto LAB_00028a39;
      }
      else {
        dfa->init_state_begbuf = prVar24;
        dfa->init_state_nl = prVar24;
        dfa->init_state_word = prVar24;
      }
      free(local_78);
      rVar15 = _REG_NOERROR;
    }
  }
  else {
    current_token.opr = aVar14;
    current_token._4_4_ = aVar14;
    local_78 = (Idx *)malloc(aVar14.idx * 4);
    if (local_78 != (Idx *)0x0) {
      memcpy(local_78,prVar19[iVar29].elems,aVar14.idx * 4);
      err_2 = _REG_NOERROR;
      if (0 < dfa->nbackref) {
        iVar29 = 0;
LAB_00028917:
        prVar9 = dfa->nodes + local_78[iVar29];
        if (prVar9->field_0x4 == '\x04') {
          pbVar35 = (re_bitset_ptr_t)0x0;
          do {
            prVar1 = dfa->nodes + local_78[(int)pbVar35];
            if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {
              uVar40 = aVar14.idx - 1;
              uVar28 = 0;
              iVar32 = *dfa->edests[local_78[iVar29]].elems;
              if (uVar40 == 0) goto LAB_000289b4;
              goto LAB_0002897d;
            }
            pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1);
          } while (aVar14.sbcset != pbVar35);
        }
        goto LAB_00028908;
      }
      goto LAB_000289f2;
    }
    rVar15 = _REG_ESPACE;
  }
LAB_00028a39:
  prVar7 = preg_00->buffer;
  pbVar26 = prVar7->str_tree_storage;
  err = rVar15;
  while (pbVar26 != (bin_tree_storage_t *)0x0) {
    pbVar6 = pbVar26->next;
    free(pbVar26);
    pbVar26 = pbVar6;
  }
  prVar7->str_tree_storage = (bin_tree_storage_t *)0x0;
  prVar7->str_tree_storage_idx = 0x1f;
  prVar7->str_tree = (bin_tree_t *)0x0;
  free(prVar7->org_indices);
  prVar7->org_indices = (Idx *)0x0;
  free(regexp.wcs);
  free(regexp.offsets);
  if (regexp.mbs_allocated != '\0') {
    free(regexp.mbs);
  }
  rVar15 = err;
  if (err == _REG_NOERROR) goto LAB_000282f4;
LAB_000282d8:
  free_dfa_content(dfa);
  preg_00->buffer = (re_dfa_t *)0x0;
  preg_00->allocated = 0;
  rVar15 = err;
LAB_000282f4:
  if (iVar4 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return rVar15;
}



int FUN_00027990(uint param_1)

{
  byte bVar1;
  undefined4 uVar2;
  int *piVar3;
  void *pvVar4;
  size_t sVar5;
  byte *pbVar6;
  int iVar7;
  undefined4 *puVar8;
  void *pvVar9;
  void *pvVar10;
  void *pvVar11;
  int *piVar12;
  undefined4 *puVar13;
  wint_t wVar14;
  __int32_t **pp_Var15;
  int *__ptr;
  undefined4 *puVar16;
  char cVar17;
  uint extraout_ECX;
  uint uVar18;
  int iVar19;
  int iVar20;
  int *piVar21;
  int *piVar22;
  uint uVar23;
  int *piVar24;
  int *piVar25;
  int iVar26;
  int iVar27;
  int *piVar28;
  size_t __size;
  int *piVar29;
  undefined4 *puVar30;
  uint uVar31;
  uint uVar32;
  int unaff_EDI;
  byte *pbVar33;
  void **ppvVar34;
  int in_GS_OFFSET;
  bool bVar35;
  bool bVar36;
  byte bVar37;
  undefined8 uVar38;
  int *local_b0;
  uint local_9c;
  int local_98;
  int local_94;
  int local_88;
  int local_84;
  int local_80;
  int local_7c;
  void *local_78;
  void *local_74;
  void *local_70;
  void *local_6c;
  void *local_68;
  int local_5c;
  uint local_58;
  uint local_54;
  uint local_50;
  int local_4c;
  uint local_44;
  int local_34;
  undefined1 local_2c;
  byte local_2b;
  byte local_2a;
  char local_29;
  int local_24;
  int local_20;
  
  bVar37 = 0;
  uVar38 = FUN_0002a2ea();
  pvVar9 = (void *)((ulonglong)uVar38 >> 0x20);
  piVar3 = (int *)uVar38;
  __ptr = (int *)*piVar3;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  *(byte *)(piVar3 + 7) = *(byte *)(piVar3 + 7) & 0x90;
  local_88 = 0;
  piVar3[3] = param_1;
  piVar3[2] = 0;
  piVar3[6] = 0;
  if ((uint)piVar3[1] < 0x88) {
    __ptr = (int *)realloc(__ptr,0x88);
    if (__ptr == (int *)0x0) {
      iVar7 = 0xc;
      goto LAB_000282f4;
    }
    piVar3[1] = 0x88;
    *piVar3 = (int)__ptr;
  }
  piVar3[2] = 0x88;
  *__ptr = 0;
  __ptr[0x21] = 0;
  puVar8 = (undefined4 *)((uint)(__ptr + 1) & 0xfffffffc);
  for (uVar18 = (uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2;
      uVar18 != 0; uVar18 = uVar18 - 1) {
    *puVar8 = 0;
    puVar8 = puVar8 + (uint)bVar37 * -2 + 1;
  }
  __ptr[0x10] = 0x1f;
  if (extraout_ECX < 0xaaaaaaa) {
    iVar7 = extraout_ECX + 1;
    __ptr[1] = iVar7;
    pvVar4 = malloc(iVar7 * 8);
    *__ptr = (int)pvVar4;
    if (extraout_ECX == 0) {
      iVar19 = 0;
      uVar18 = 1;
    }
    else {
      uVar18 = 1;
      do {
        uVar18 = uVar18 * 2;
      } while (uVar18 <= extraout_ECX);
      iVar19 = uVar18 - 1;
    }
    pvVar4 = calloc(0xc,uVar18);
    __ptr[0x11] = iVar19;
    __ptr[8] = (int)pvVar4;
    sVar5 = __ctype_get_mb_cur_max();
    __ptr[0x17] = sVar5;
    pbVar6 = (byte *)nl_langinfo(0xe);
    if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)
       ) {
      bVar35 = pbVar6[3] < 0x2d;
      bVar36 = pbVar6[3] == 0x2d;
      iVar19 = 2;
      pbVar6 = pbVar6 + bVar36 + 3;
      pbVar33 = (byte *)(unaff_EDI + 0x504b);
      do {
        if (iVar19 == 0) break;
        iVar19 = iVar19 + -1;
        bVar35 = *pbVar6 < *pbVar33;
        bVar36 = *pbVar6 == *pbVar33;
        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;
        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;
      } while (bVar36);
      if ((!bVar35 && !bVar36) == bVar35) {
        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;
      }
    }
    bVar1 = *(byte *)(__ptr + 0x16);
    *(byte *)(__ptr + 0x16) = bVar1 & 0xf7;
    if (1 < __ptr[0x17]) {
      if ((bVar1 & 4) == 0) {
        pvVar4 = calloc(0x20,1);
        __ptr[0xf] = (int)pvVar4;
        if (pvVar4 == (void *)0x0) goto LAB_000282d0;
        iVar19 = 0;
        do {
          uVar18 = iVar19 * 8;
          iVar20 = 0;
          do {
            while( true ) {
              wVar14 = btowc(uVar18);
              if (wVar14 != 0xffffffff) break;
              if ((uVar18 & 0xffffff80) == 0) {
LAB_000283fc:
                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;
              }
LAB_00028404:
              iVar20 = iVar20 + 1;
              uVar18 = uVar18 + 1;
              if (iVar20 == 0x20) goto LAB_00028460;
            }
            *(uint *)(__ptr[0xf] + iVar19) =
                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);
            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;
            if (wVar14 != uVar18) goto LAB_000283fc;
            iVar20 = iVar20 + 1;
            uVar18 = uVar18 + 1;
          } while (iVar20 != 0x20);
LAB_00028460:
          iVar19 = iVar19 + 4;
        } while (iVar19 != 0x20);
      }
      else {
        __ptr[0xf] = unaff_EDI + 0x58c9;
      }
    }
    if ((*__ptr != 0) && (__ptr[8] != 0)) {
      local_88 = 0;
      iVar19 = piVar3[5];
      ppvVar34 = &local_70;
      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {
        *ppvVar34 = (void *)0x0;
        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;
      }
      uVar18 = param_1 & 0x400000;
      local_2c = uVar18 != 0;
      local_29 = iVar19 != 0 || uVar18 != 0;
      iVar20 = __ptr[0x17];
      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;
      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;
      local_74 = pvVar9;
      local_44 = extraout_ECX;
      local_34 = iVar19;
      local_24 = iVar20;
      if (extraout_ECX != 0) {
        iVar7 = FUN_00018140(&local_74,iVar7);
        if (iVar7 != 0) goto LAB_00028335;
        iVar20 = __ptr[0x17];
      }
      if (local_29 != '\0') {
        pvVar9 = local_70;
      }
      local_70 = pvVar9;
      if (uVar18 == 0) {
        if (iVar20 < 2) {
          uVar31 = local_50;
          local_54 = local_50;
          if (iVar19 != 0) {
            if ((int)local_44 <= (int)local_50) {
              local_50 = local_44;
            }
            uVar31 = local_58;
            local_54 = local_58;
            if ((int)local_58 < (int)local_50) {
              *(undefined1 *)((int)pvVar9 + local_58) =
                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));
              local_58 = local_58 + 1;
              uVar31 = local_50;
              local_54 = local_50;
              if ((int)local_58 < (int)local_50) {
                do {
                  *(undefined1 *)((int)pvVar9 + local_58) =
                       *(undefined1 *)
                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));
                  local_58 = local_58 + 1;
                  uVar31 = local_50;
                } while (local_50 != local_58);
              }
            }
          }
        }
        else {
          FUN_00018420();
          uVar31 = local_58;
        }
      }
      else {
        if (1 < iVar20) {
          do {
            iVar7 = FUN_00018640(&local_74);
            if (iVar7 != 0) goto LAB_00028335;
            uVar31 = local_58;
            if (((int)extraout_ECX <= (int)local_54) ||
               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;
            iVar7 = FUN_00018140(&local_74,local_50 * 2);
          } while (iVar7 == 0);
          local_b0 = (int *)*piVar3;
          local_88 = iVar7;
          goto LAB_00027c60;
        }
        local_b0 = (int *)local_44;
        if ((int)local_50 <= (int)local_44) {
          local_b0 = (int *)local_50;
        }
        if ((int)local_58 < (int)local_b0) {
          pp_Var15 = __ctype_toupper_loc();
          while( true ) {
            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);
            if (local_34 == 0) {
              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];
            }
            else {
              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];
            }
            if (local_b0 == (int *)(local_58 + 1)) break;
            local_58 = local_58 + 1;
            pvVar9 = local_70;
          }
        }
        else {
          local_b0 = (int *)local_58;
        }
        local_54 = (uint)local_b0;
        uVar31 = local_54;
      }
LAB_00027d86:
      local_58 = uVar31;
      local_88 = 0;
      iVar7 = *piVar3;
      piVar3[6] = 0;
      *(uint *)(iVar7 + 0x80) = param_1;
      iVar19 = FUN_0001afc0();
      local_4c = local_4c + iVar19;
      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);
      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {
        __ptr[0xd] = 0;
        local_b0 = (int *)*piVar3;
        goto LAB_00027c60;
      }
      iVar19 = *(int *)(iVar7 + 0x40);
      if (iVar19 == 0x1f) {
        puVar16 = (undefined4 *)malloc(0x3e4);
        if (puVar16 != (undefined4 *)0x0) {
          iVar20 = 1;
          iVar27 = 4;
          iVar26 = 0x18;
          *puVar16 = *(undefined4 *)(iVar7 + 0x38);
          iVar19 = 0;
          *(undefined4 **)(iVar7 + 0x38) = puVar16;
          goto LAB_00027e0d;
        }
        local_b0 = (int *)*piVar3;
        if (puVar8 != (undefined4 *)0x0) {
          piVar28 = (int *)0x0;
          bVar35 = true;
          goto LAB_00027e67;
        }
      }
      else {
        puVar16 = *(undefined4 **)(iVar7 + 0x38);
        iVar20 = iVar19 + 1;
        iVar26 = iVar19 * 0x20 + 0x18;
        iVar27 = iVar19 * 0x20 + 4;
LAB_00027e0d:
        *(int *)(iVar7 + 0x40) = iVar20;
        puVar16[iVar19 * 8 + 1] = 0;
        puVar16[iVar19 * 8 + 2] = 0;
        puVar16[iVar19 * 8 + 3] = 0;
        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;
        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);
        *pbVar6 = *pbVar6 & 0xf3;
        piVar28 = (int *)(iVar27 + (int)puVar16);
        bVar35 = piVar28 == (int *)0x0;
        puVar16[iVar19 * 8 + 4] = 0;
        local_b0 = (int *)*piVar3;
        puVar16[iVar19 * 8 + 5] = 0;
        puVar16[iVar19 * 8 + 8] = 0xffffffff;
        piVar21 = piVar28;
        if (puVar8 != (undefined4 *)0x0) {
LAB_00027e67:
          iVar19 = *(int *)(iVar7 + 0x40);
          if (iVar19 == 0x1f) {
            puVar16 = (undefined4 *)malloc(0x3e4);
            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;
            iVar20 = 1;
            local_94 = 0x18;
            local_98 = 4;
            *puVar16 = *(undefined4 *)(iVar7 + 0x38);
            iVar19 = 0;
            *(undefined4 **)(iVar7 + 0x38) = puVar16;
          }
          else {
            iVar20 = iVar19 + 1;
            local_98 = iVar19 * 0x20 + 4;
            local_94 = iVar19 * 0x20 + 0x18;
            puVar16 = *(undefined4 **)(iVar7 + 0x38);
          }
          *(int *)(iVar7 + 0x40) = iVar20;
          puVar16[iVar19 * 8 + 1] = 0;
          piVar21 = (int *)(local_98 + (int)puVar16);
          puVar16[iVar19 * 8 + 2] = puVar8;
          puVar16[iVar19 * 8 + 3] = piVar28;
          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;
          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);
          *pbVar6 = *pbVar6 & 0xf3;
          puVar16[iVar19 * 8 + 4] = 0;
          puVar16[iVar19 * 8 + 5] = 0;
          puVar16[iVar19 * 8 + 8] = 0xffffffff;
          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);
          *puVar8 = piVar21;
          if (piVar28 != (int *)0x0) {
            *piVar28 = (int)piVar21;
          }
        }
        piVar28 = local_b0;
        if (!bVar35) {
          __ptr[0xd] = (int)piVar21;
          sVar5 = local_b0[1] * 4;
          __size = local_b0[1] * 0xc;
          pvVar9 = malloc(sVar5);
          local_b0[3] = (int)pvVar9;
          pvVar4 = malloc(sVar5);
          local_b0[4] = (int)pvVar4;
          pvVar10 = malloc(__size);
          local_b0[5] = (int)pvVar10;
          pvVar11 = malloc(__size);
          local_b0[6] = (int)pvVar11;
          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&
             (pvVar11 != (void *)0x0)) {
            iVar7 = piVar3[6];
            piVar12 = (int *)malloc(iVar7 * 4);
            local_b0[0x21] = (int)piVar12;
            piVar21 = (int *)local_b0[0xd];
            if (piVar12 != (int *)0x0) {
              iVar19 = 0;
              if (iVar7 != 0) {
                do {
                  piVar12[iVar19] = iVar19;
                  iVar19 = iVar19 + 1;
                } while (iVar19 != iVar7);
              }
              cVar17 = (char)piVar21[6];
              piVar22 = (int *)piVar21[1];
              piVar25 = piVar21;
LAB_00028010:
              piVar29 = piVar25;
              piVar25 = piVar22;
              piVar24 = piVar25;
              if (cVar17 == '\x04') {
                iVar19 = piVar12[piVar29[5]];
                piVar29[5] = iVar19;
                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);
                goto joined_r0x00028003;
              }
              if (cVar17 != '\x11') goto joined_r0x00028003;
              if (piVar25 != (int *)0x0) goto code_r0x00028148;
              goto LAB_00028038;
            }
            goto LAB_0002809c;
          }
          local_88 = 0xc;
          goto LAB_00027c60;
        }
      }
LAB_00028d28:
      local_88 = 0xc;
      __ptr[0xd] = 0;
      goto LAB_00027c60;
    }
  }
LAB_000282d0:
  local_88 = 0xc;
  goto LAB_000282d8;
code_r0x00028148:
  cVar17 = (char)piVar25[6];
  piVar24 = (int *)piVar25[1];
  piVar22 = piVar24;
  if (cVar17 == '\x11') {
    iVar19 = piVar25[5];
    piVar29[1] = (int)piVar24;
    if (piVar24 != (int *)0x0) {
      *piVar24 = (int)piVar29;
    }
    piVar12[iVar19] = piVar12[piVar29[5]];
    if (iVar19 < 0x20) {
      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));
    }
joined_r0x00028003:
    if (piVar24 == (int *)0x0) {
LAB_00028038:
      piVar22 = (int *)0x0;
      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {
        piVar25 = (int *)*piVar29;
        piVar22 = piVar29;
        piVar29 = piVar25;
        if (piVar25 == (int *)0x0) {
          if (iVar7 == 0) goto LAB_00028074;
          iVar19 = *piVar12;
          if (iVar19 == 0) goto LAB_0002806d;
          goto LAB_0002809c;
        }
      }
    }
    cVar17 = (char)piVar24[6];
    piVar22 = (int *)piVar24[1];
    piVar25 = piVar24;
  }
  goto LAB_00028010;
  while (piVar12[iVar19] == iVar19) {
LAB_0002806d:
    iVar19 = iVar19 + 1;
    if (iVar19 == iVar7) goto LAB_00028074;
  }
LAB_0002809c:
  do {
    piVar22 = (int *)piVar21[1];
    piVar12 = piVar21;
    while (piVar21 = piVar22, piVar21 != (int *)0x0) {
      piVar12 = piVar21;
      piVar22 = (int *)piVar21[1];
    }
    piVar21 = (int *)piVar12[2];
  } while (piVar21 != (int *)0x0);
  iVar7 = 0;
  piVar21 = (int *)0x0;
  do {
    local_80 = 0;
    if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {
      if (piVar21 != (int *)0x0) {
        cVar17 = (char)piVar21[6];
        goto joined_r0x000280c8;
      }
    }
    else {
      puVar8 = (undefined4 *)FUN_00020ab0();
      piVar12[1] = (int)puVar8;
      if (puVar8 != (undefined4 *)0x0) {
        *puVar8 = piVar12;
      }
      if (piVar12[2] != 0) {
        cVar17 = *(char *)(piVar12[2] + 0x18);
joined_r0x000280c8:
        if (cVar17 == '\x11') {
          puVar8 = (undefined4 *)FUN_00020ab0();
          piVar12[2] = (int)puVar8;
          if (puVar8 != (undefined4 *)0x0) {
            *puVar8 = piVar12;
          }
        }
      }
      iVar7 = local_80;
      if (local_80 != 0) goto LAB_00028335;
    }
    piVar22 = (int *)*piVar12;
    if (piVar22 == (int *)0x0) {
      puVar8 = (undefined4 *)local_b0[0xd];
      goto LAB_000281a0;
    }
    piVar21 = (int *)piVar22[2];
    if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;
    iVar7 = piVar22[1];
    piVar12 = piVar22;
  } while( true );
LAB_00028074:
  free(piVar12);
  local_b0[0x21] = 0;
  piVar21 = (int *)local_b0[0xd];
  goto LAB_0002809c;
LAB_000281a0:
  do {
    do {
      puVar16 = puVar8;
      puVar8 = (undefined4 *)puVar16[1];
    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);
    puVar8 = (undefined4 *)puVar16[2];
  } while ((undefined4 *)puVar16[2] != (undefined4 *)0x0);
  do {
    if (*(char *)(puVar16 + 6) == '\x10') {
      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);
      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);
      puVar16[7] = uVar2;
LAB_000281c7:
      puVar13 = (undefined4 *)*puVar16;
    }
    else {
      puVar16[3] = puVar16;
      iVar7 = FUN_00018d20();
      puVar16[7] = iVar7;
      if (iVar7 == -1) goto LAB_00028330;
      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;
      *(uint *)(*local_b0 + 4 + iVar7 * 8) =
           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;
      puVar13 = (undefined4 *)*puVar16;
    }
    if (puVar13 == (undefined4 *)0x0) {
      puVar8 = (undefined4 *)local_b0[0xd];
      cVar17 = *(char *)(puVar8 + 6);
      puVar16 = (undefined4 *)puVar8[1];
      puVar13 = puVar8;
      if (cVar17 == '\v') goto LAB_00028283;
      goto LAB_00028250;
    }
    puVar8 = (undefined4 *)puVar13[2];
    bVar35 = puVar16 == puVar8;
    puVar16 = puVar13;
  } while (puVar8 == (undefined4 *)0x0 || bVar35);
  goto LAB_000281a0;
LAB_00028250:
  if (cVar17 == '\x10') {
    iVar7 = puVar13[2];
    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);
    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];
  }
  else {
    if (puVar16 != (undefined4 *)0x0) {
      puVar16[4] = puVar13[4];
    }
    puVar30 = (undefined4 *)puVar13[2];
    if (puVar30 == (undefined4 *)0x0) {
      if (puVar16 == (undefined4 *)0x0) {
        puVar16 = (undefined4 *)*puVar13;
        while( true ) {
          puVar30 = puVar16;
          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;
          puVar16 = (undefined4 *)puVar30[2];
          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;
          puVar16 = (undefined4 *)*puVar30;
          puVar13 = puVar30;
        }
      }
    }
    else {
      if (puVar16 == (undefined4 *)0x0) {
        puVar16 = puVar30;
      }
      puVar30[4] = puVar13[4];
    }
  }
  while( true ) {
    cVar17 = *(char *)(puVar16 + 6);
    puVar30 = puVar16 + 1;
    puVar13 = puVar16;
    puVar16 = (undefined4 *)*puVar30;
    if (cVar17 != '\v') break;
LAB_00028283:
    puVar16[4] = puVar13;
  }
  goto LAB_00028250;
  while (puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,
        (undefined4 *)*puVar30 != (undefined4 *)0x0) {
    while( true ) {
      puVar30 = puVar13;
      puVar8 = (undefined4 *)puVar30[2];
      bVar35 = puVar8 == puVar16;
      if (bVar35 || puVar8 == (undefined4 *)0x0) break;
LAB_00028398:
      do {
        bVar37 = *(byte *)(puVar8 + 6);
        if (bVar37 < 0x11) {
                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))
                            ();
          return iVar7;
        }
        if ((bVar37 & 8) != 0) {
                    /* WARNING: Subroutine does not return */
          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,
                        (char *)(unaff_EDI + 0x5895));
        }
        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);
        puVar16 = (undefined4 *)puVar8[1];
        puVar13 = puVar8;
        puVar8 = puVar16;
      } while (puVar16 != (undefined4 *)0x0);
    }
  }
  bVar36 = false;
  iVar19 = 0;
  do {
    if (local_b0[2] == iVar19) goto LAB_000284fa;
LAB_000284dd:
    while( true ) {
      iVar20 = iVar19 * 0xc;
      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;
      iVar7 = FUN_0001fb10(1);
      if (iVar7 != 0) goto LAB_00028335;
      iVar19 = iVar19 + 1;
      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;
      free(local_78);
      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;
      if (local_b0[2] == iVar19) goto LAB_00028505;
    }
  } while( true );
code_r0x000284f2:
  iVar19 = iVar19 + 1;
  if (local_b0[2] == iVar19) {
LAB_000284fa:
    if (!bVar36) {
      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||
          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;
      pvVar9 = malloc(iVar19 * 0xc);
      local_b0[7] = (int)pvVar9;
      if (pvVar9 != (void *)0x0) {
        uVar31 = 0;
        if (iVar19 != 0) goto LAB_0002875b;
        goto LAB_00028860;
      }
      local_88 = 0xc;
      local_b0 = (int *)*piVar3;
      goto LAB_00027c60;
    }
LAB_00028505:
    iVar19 = 0;
    bVar36 = false;
  }
  goto LAB_000284dd;
LAB_00028330:
  iVar7 = 0xc;
LAB_00028335:
  local_b0 = (int *)*piVar3;
  local_88 = iVar7;
LAB_00027c60:
  puVar8 = (undefined4 *)local_b0[0xe];
  while (puVar8 != (undefined4 *)0x0) {
    puVar16 = (undefined4 *)*puVar8;
    free(puVar8);
    puVar8 = puVar16;
  }
  local_b0[0xe] = 0;
  local_b0[0x10] = 0x1f;
  local_b0[0xd] = 0;
  free((void *)local_b0[4]);
  local_b0[4] = 0;
  free(local_6c);
  free(local_68);
  if (local_29 != '\0') {
    free(local_70);
  }
  goto LAB_000282d8;
LAB_0002897d:
  do {
    uVar23 = uVar31 + uVar18 >> 1;
    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {
      if (uVar23 <= uVar18) break;
      uVar32 = uVar18 + uVar23 >> 1;
      iVar20 = *(int *)((int)local_78 + uVar32 * 4);
      uVar31 = uVar23;
      uVar23 = uVar32;
      while (iVar19 <= iVar20) {
        if (uVar23 <= uVar18) goto LAB_000289b4;
        uVar32 = uVar18 + uVar23 >> 1;
        uVar31 = uVar23;
        uVar23 = uVar32;
        iVar20 = *(int *)((int)local_78 + uVar32 * 4);
      }
    }
    uVar18 = uVar23 + 1;
  } while (uVar18 < uVar31);
LAB_000289b4:
  if (*(int *)((int)local_78 + uVar18 * 4) == iVar19) {
LAB_00028908:
    iVar7 = iVar7 + 1;
    iVar19 = local_7c;
    if (local_7c <= iVar7) goto LAB_000289f2;
    goto LAB_00028917;
  }
  iVar7 = FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc);
  if (iVar7 != 0) goto LAB_00028a39;
  iVar7 = 1;
  iVar19 = local_7c;
  if (local_7c < 2) goto LAB_000289f2;
  goto LAB_00028917;
LAB_0002875b:
  while( true ) {
    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);
    *puVar8 = 0;
    puVar8[1] = 0;
    puVar8[2] = 0;
    uVar23 = local_b0[2];
    if (uVar23 <= uVar31 + 1) break;
    pvVar9 = (void *)local_b0[7];
    uVar31 = uVar31 + 1;
  }
  if (uVar23 != 0) {
    local_9c = 0;
    local_b0 = (int *)local_b0[6];
    do {
      iVar19 = (int)local_b0 + local_9c * 0xc;
      iVar7 = *(int *)(iVar19 + 8);
      if (0 < *(int *)(iVar19 + 4)) {
        iVar19 = 0;
        do {
          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);
          iVar20 = piVar21[1];
          pvVar9 = (void *)piVar21[2];
          if (*piVar21 == iVar20) {
            *piVar21 = (iVar20 + 1) * 2;
            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);
            if (pvVar9 == (void *)0x0) goto LAB_00028330;
            local_b0 = (int *)piVar28[6];
            iVar20 = piVar21[1];
            piVar21[2] = (int)pvVar9;
          }
          iVar19 = iVar19 + 1;
          piVar21[1] = iVar20 + 1;
          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;
        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));
        uVar23 = piVar28[2];
      }
      local_9c = local_9c + 1;
    } while (local_9c < uVar23);
  }
LAB_00028860:
  local_88 = 0;
  if (((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0)) {
    if (__ptr[2] != 0) {
      if (0xc < *(byte *)(*__ptr + 4)) {
                    /* WARNING: Subroutine does not return */
        abort();
      }
                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +
                        unaff_EDI + 0xc669))();
      return iVar7;
    }
    __ptr[0x17] = 1;
    *(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;
  }
  iVar7 = *(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c);
  __ptr[0x12] = iVar7;
  iVar7 = __ptr[6] + iVar7 * 0xc;
  iVar19 = *(int *)(iVar7 + 4);
  if (iVar19 < 1) {
    local_80 = 0;
    local_7c = 0;
    local_78 = (void *)0x0;
    local_84 = 0;
LAB_000289f2:
    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);
    __ptr[9] = iVar19;
    iVar7 = local_84;
    if (iVar19 != 0) {
      if (*(char *)(iVar19 + 0x34) < '\0') {
        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);
        __ptr[10] = iVar7;
        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);
        __ptr[0xb] = iVar7;
        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);
        __ptr[0xc] = iVar19;
        iVar7 = local_84;
        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;
      }
      else {
        __ptr[0xc] = iVar19;
        __ptr[0xb] = iVar19;
        __ptr[10] = iVar19;
      }
      free(local_78);
      iVar7 = 0;
    }
  }
  else {
    local_80 = iVar19;
    local_7c = iVar19;
    local_78 = malloc(iVar19 * 4);
    if (local_78 != (void *)0x0) {
      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);
      local_84 = 0;
      if (0 < __ptr[0x13]) {
        iVar7 = 0;
LAB_00028917:
        iVar20 = *(int *)((int)local_78 + iVar7 * 4);
        piVar28 = (int *)(*__ptr + iVar20 * 8);
        if ((char)piVar28[1] == '\x04') {
          iVar26 = 0;
          do {
            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);
            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {
              uVar31 = iVar19 - 1;
              uVar18 = 0;
              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);
              if (uVar31 == 0) goto LAB_000289b4;
              goto LAB_0002897d;
            }
            iVar26 = iVar26 + 1;
          } while (iVar19 != iVar26);
        }
        goto LAB_00028908;
      }
      goto LAB_000289f2;
    }
    iVar7 = 0xc;
  }
LAB_00028a39:
  iVar19 = *piVar3;
  puVar8 = *(undefined4 **)(iVar19 + 0x38);
  local_88 = iVar7;
  while (puVar8 != (undefined4 *)0x0) {
    puVar16 = (undefined4 *)*puVar8;
    free(puVar8);
    puVar8 = puVar16;
  }
  *(undefined4 *)(iVar19 + 0x38) = 0;
  *(undefined4 *)(iVar19 + 0x40) = 0x1f;
  *(undefined4 *)(iVar19 + 0x34) = 0;
  free(*(void **)(iVar19 + 0x10));
  *(undefined4 *)(iVar19 + 0x10) = 0;
  free(local_6c);
  free(local_68);
  if (local_29 != '\0') {
    free(local_70);
  }
  iVar7 = local_88;
  if (local_88 == 0) goto LAB_000282f4;
LAB_000282d8:
  FUN_0001c000();
  *piVar3 = 0;
  piVar3[1] = 0;
  iVar7 = local_88;
LAB_000282f4:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0002a720();
  }
  return iVar7;
}


PUSH EBP
PUSH EDI
CALL 0x0002a2ea
ADD EDI,0xc669
PUSH ESI
PUSH EBX
SUB ESP,0xac
MOV EBP,dword ptr [EAX]
MOV dword ptr [ESP + 0x10],EAX
MOV dword ptr [ESP + 0x8],EDI
MOV dword ptr [ESP + 0x14],EDX
MOV dword ptr [ESP + 0xc],ECX
MOV EDI,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0x9c],EDI
XOR EDI,EDI
MOV EDI,dword ptr [ESP + 0xc0]
AND byte ptr [EAX + 0x1c],0x90
CMP dword ptr [EAX + 0x4],0x87
MOV dword ptr [ESP + 0x34],0x0
MOV dword ptr [EAX + 0xc],EDI
MOV dword ptr [EAX + 0x8],0x0
MOV dword ptr [EAX + 0x18],0x0
JBE 0x00028ce0
LEA EDI,[EBP + 0x4]
MOV ECX,EBP
MOV EAX,dword ptr [ESP + 0x10]
AND EDI,0xfffffffc
SUB ECX,EDI
MOV dword ptr [EAX + 0x8],0x88
XOR EAX,EAX
ADD ECX,0x88
MOV dword ptr [EBP],0x0
MOV dword ptr [EBP + 0x84],0x0
SHR ECX,0x2
STOSD.REP ES:EDI
MOV dword ptr [EBP + 0x40],0x1f
CMP dword ptr [ESP + 0xc],0xaaaaaa9
JA 0x000282d0
MOV EDI,dword ptr [ESP + 0xc]
SUB ESP,0xc
LEA EAX,[EDI + 0x1]
MOV dword ptr [ESP + 0x2c],EAX
MOV dword ptr [EBP + 0x4],EAX
SHL EAX,0x3
PUSH EAX
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x00011220
ADD ESP,0x10
MOV dword ptr [EBP],EAX
TEST EDI,EDI
JZ 0x00028d18
MOV EAX,0x1
LEA ESI,[ESI]
ADD EAX,EAX
CMP dword ptr [ESP + 0xc],EAX
JNC 0x00027a78
LEA ESI,[EAX + -0x1]
SUB ESP,0x8
PUSH EAX
PUSH 0xc
MOV EDI,dword ptr [ESP + 0x18]
MOV EBX,EDI
CALL 0x00011440
MOV dword ptr [EBP + 0x44],ESI
MOV dword ptr [EBP + 0x20],EAX
CALL 0x00011190
MOV dword ptr [EBP + 0x5c],EAX
MOV dword ptr [ESP],0xe
CALL 0x00011320
ADD ESP,0x10
MOVZX EDX,byte ptr [EAX]
AND EDX,0xffffffdf
CMP DL,0x55
JNZ 0x00027b00
MOVZX EDX,byte ptr [EAX + 0x1]
AND EDX,0xffffffdf
CMP DL,0x54
JNZ 0x00027b00
MOVZX EDX,byte ptr [EAX + 0x2]
AND EDX,0xffffffdf
CMP DL,0x46
JNZ 0x00027b00
XOR EDX,EDX
CMP byte ptr [EAX + 0x3],0x2d
MOV ECX,0x2
SETZ DL
LEA EDI,[EDI + 0xffff89e2]
LEA ESI,[EAX + EDX*0x1 + 0x3]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x00027b00
OR byte ptr [EBP + 0x58],0x4
LEA ESI,[ESI]
NOP
MOVZX EAX,byte ptr [EBP + 0x58]
MOV EDX,EAX
AND EDX,0xfffffff7
CMP dword ptr [EBP + 0x5c],0x1
MOV byte ptr [EBP + 0x58],DL
JLE 0x00027b27
TEST AL,0x4
JZ 0x000283c0
MOV EAX,dword ptr [ESP + 0x8]
LEA EAX,[EAX + 0xffff9260]
MOV dword ptr [EBP + 0x3c],EAX
MOV EAX,dword ptr [EBP]
TEST EAX,EAX
JZ 0x000282d0
MOV EAX,dword ptr [EBP + 0x20]
TEST EAX,EAX
JZ 0x000282d0
MOV EAX,dword ptr [ESP + 0x10]
LEA EBX,[ESP + 0x4c]
LEA ESI,[ESP + 0x48]
MOV ECX,0x13
MOV EDI,EBX
MOV EBX,dword ptr [ESP + 0xc0]
MOV dword ptr [ESP + 0x34],0x0
MOV EDX,dword ptr [EAX + 0x14]
XOR EAX,EAX
STOSD.REP ES:EDI
MOV EAX,dword ptr [ESP + 0x14]
AND EBX,0x400000
MOV EDI,EDX
SETNZ byte ptr [ESP + 0x90]
MOV dword ptr [ESP + 0x48],EAX
MOV EAX,dword ptr [ESP + 0xc]
OR EDI,EBX
MOV dword ptr [ESP + 0x1c],EBX
SETNZ BL
MOV dword ptr [ESP + 0x78],EAX
MOV dword ptr [ESP + 0x74],EAX
MOVZX EAX,byte ptr [EBP + 0x58]
MOV dword ptr [ESP + 0x88],EDX
MOV EDX,dword ptr [EBP + 0x5c]
MOV ECX,EAX
SHR AL,0x3
MOV byte ptr [ESP + 0x93],BL
AND EAX,0x1
SHR CL,0x2
MOV dword ptr [ESP + 0x98],EDX
MOV byte ptr [ESP + 0x92],AL
MOV EAX,dword ptr [ESP + 0xc]
AND ECX,0x1
MOV byte ptr [ESP + 0x91],CL
MOV dword ptr [ESP + 0x80],EAX
MOV dword ptr [ESP + 0x7c],EAX
TEST EAX,EAX
JNZ 0x000282a8
MOV EAX,dword ptr [ESP + 0x14]
TEST BL,BL
CMOVNZ EAX,dword ptr [ESP + 0x4c]
MOV dword ptr [ESP + 0x14],EAX
MOV dword ptr [ESP + 0x4c],EAX
MOV EAX,dword ptr [ESP + 0x1c]
TEST EAX,EAX
JZ 0x00027d00
CMP EDX,0x1
JLE 0x00028c40
MOV EBX,dword ptr [ESP + 0xc]
SUB ESP,0xc
PUSH ESI
CALL 0x00018640
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00028335
CMP EBX,dword ptr [ESP + 0x68]
JLE 0x00028d90
MOV EAX,dword ptr [ESP + 0x6c]
MOV EDX,dword ptr [EBP + 0x5c]
ADD EDX,dword ptr [ESP + 0x64]
CMP EAX,EDX
JG 0x00028d90
SUB ESP,0x8
ADD EAX,EAX
PUSH EAX
PUSH ESI
CALL 0x00018140
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00027c0e
MOV dword ptr [ESP + 0x34],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX + 0x38]
TEST EAX,EAX
JZ 0x00027c88
LEA ESI,[ESI]
NOP
SUB ESP,0xc
MOV ESI,dword ptr [EAX]
PUSH EAX
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x000110a0
MOV EAX,ESI
ADD ESP,0x10
TEST ESI,ESI
JNZ 0x00027c70
MOV EDI,dword ptr [ESP + 0xc]
SUB ESP,0xc
MOV dword ptr [EDI + 0x38],0x0
MOV dword ptr [EDI + 0x40],0x1f
MOV dword ptr [EDI + 0x34],0x0
PUSH dword ptr [EDI + 0x10]
MOV ESI,dword ptr [ESP + 0x18]
MOV EBX,ESI
CALL 0x000110a0
MOV dword ptr [EDI + 0x10],0x0
POP ECX
PUSH dword ptr [ESP + 0x5c]
CALL 0x000110a0
POP ESI
PUSH dword ptr [ESP + 0x60]
CALL 0x000110a0
ADD ESP,0x10
CMP byte ptr [ESP + 0x93],0x0
JZ 0x000282d8
SUB ESP,0xc
PUSH dword ptr [ESP + 0x58]
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x000110a0
ADD ESP,0x10
JMP 0x000282d8
CMP EDX,0x1
JG 0x00028b30
MOV EDX,dword ptr [ESP + 0x6c]
TEST EDI,EDI
JZ 0x00027d76
CMP dword ptr [ESP + 0x78],EDX
MOV EAX,dword ptr [ESP + 0x64]
CMOVLE EDX,dword ptr [ESP + 0x78]
CMP EDX,EAX
JLE 0x00028ef8
MOV ECX,dword ptr [ESP + 0x48]
MOV EBX,dword ptr [ESP + 0x88]
ADD ECX,EAX
ADD ECX,dword ptr [ESP + 0x60]
MOVZX ECX,byte ptr [ECX]
MOVZX ECX,byte ptr [EBX + ECX*0x1]
MOV EBX,dword ptr [ESP + 0x14]
MOV byte ptr [EBX + EAX*0x1],CL
ADD EAX,0x1
CMP EDX,EAX
JLE 0x00027d76
LEA ESI,[ESI]
MOV ECX,dword ptr [ESP + 0x48]
MOV EBX,dword ptr [ESP + 0x88]
ADD ECX,EAX
ADD ECX,dword ptr [ESP + 0x60]
MOVZX ECX,byte ptr [ECX]
MOVZX EBX,byte ptr [EBX + ECX*0x1]
MOV ECX,dword ptr [ESP + 0x4c]
MOV byte ptr [ECX + EAX*0x1],BL
ADD EAX,0x1
CMP EDX,EAX
JNZ 0x00027d50
MOV dword ptr [ESP + 0x64],EDX
MOV dword ptr [ESP + 0x68],EDX
MOV dword ptr [ESP + 0x34],0x0
MOV EBX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0xc0]
MOV EDX,ESI
MOV EDI,dword ptr [EBX]
MOV dword ptr [EBX + 0x18],0x0
MOV ECX,EAX
OR ECX,0x800000
MOV dword ptr [EDI + 0x80],EAX
LEA EAX,[ESP + 0x3c]
MOV dword ptr [ESP + 0x14],EAX
CALL 0x0001afc0
ADD dword ptr [ESP + 0x70],EAX
SUB ESP,0x4
MOV EDX,EBX
LEA EAX,[ESP + 0x38]
PUSH EAX
MOV EAX,ESI
PUSH 0x0
PUSH dword ptr [ESP + 0xcc]
MOV ECX,dword ptr [ESP + 0x24]
CALL 0x00026f90
MOV dword ptr [ESP + 0x28],EAX
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x34]
TEST EDX,EDX
JZ 0x00027df0
TEST EAX,EAX
JZ 0x00028f3a
MOV EDX,dword ptr [EDI + 0x40]
CMP EDX,0x1f
JZ 0x00028d40
MOV ESI,EDX
MOV EAX,dword ptr [EDI + 0x38]
LEA EBX,[EDX + 0x1]
SHL ESI,0x5
LEA ECX,[ESI + 0x18]
ADD ESI,0x4
SHL EDX,0x5
MOV dword ptr [EDI + 0x40],EBX
LEA EBX,[EAX + EDX*0x1]
MOV dword ptr [EBX + 0x4],0x0
MOV dword ptr [EBX + 0x8],0x0
MOV dword ptr [EBX + 0xc],0x0
MOV byte ptr [EAX + ECX*0x1 + 0x4],0x2
AND byte ptr [EAX + EDX*0x1 + 0x1e],0xf3
ADD ESI,EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [EBX + 0x10],0x0
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBX + 0x14],0x0
MOV dword ptr [EBX + 0x20],0xffffffff
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x18]
SETZ byte ptr [ESP + 0x20]
TEST EAX,EAX
JZ 0x00027eeb
MOV EDX,dword ptr [EDI + 0x40]
CMP EDX,0x1f
JZ 0x00028e70
MOV EBX,EDX
LEA ECX,[EDX + 0x1]
SHL EBX,0x5
LEA EAX,[EBX + 0x4]
MOV dword ptr [ESP + 0x24],EAX
LEA EAX,[EBX + 0x18]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [EDI + 0x38]
SHL EDX,0x5
MOV dword ptr [EDI + 0x40],ECX
MOV EBX,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0x24]
MOV EDI,EDX
MOV dword ptr [ESP + 0x24],EDX
MOV EDX,dword ptr [ESP + 0x28]
ADD EDI,EAX
MOV dword ptr [EDI + 0x4],0x0
ADD ECX,EAX
MOV dword ptr [EDI + 0x8],EBX
MOV dword ptr [EDI + 0xc],ESI
MOV byte ptr [EAX + EDX*0x1 + 0x4],0x10
MOV EDX,dword ptr [ESP + 0x24]
AND byte ptr [EAX + EDX*0x1 + 0x1e],0xf3
TEST ECX,ECX
MOV dword ptr [EDI + 0x10],0x0
SETZ AL
MOV dword ptr [EDI + 0x14],0x0
MOV dword ptr [EDI + 0x20],0xffffffff
OR byte ptr [ESP + 0x20],AL
MOV dword ptr [EBX],ECX
TEST ESI,ESI
JZ 0x00027ee9
MOV dword ptr [ESI],ECX
MOV ESI,ECX
CMP byte ptr [ESP + 0x20],0x0
JNZ 0x00028d28
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [EBP + 0x34],ESI
SUB ESP,0xc
MOV ESI,dword ptr [EAX + 0x4]
LEA EDX,[ESI*0x4 + 0x0]
LEA ESI,[ESI + ESI*0x2]
PUSH EDX
MOV EBX,dword ptr [ESP + 0x18]
SHL ESI,0x2
MOV dword ptr [ESP + 0x28],EDX
CALL 0x00011220
MOV EDX,dword ptr [ESP + 0x28]
MOV EBX,dword ptr [ESP + 0x18]
MOV EDI,EAX
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [EAX + 0xc],EDI
MOV dword ptr [ESP],EDX
CALL 0x00011220
MOV EBX,dword ptr [ESP + 0x18]
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0x30],ECX
MOV dword ptr [EAX + 0x10],ECX
MOV dword ptr [ESP],ESI
CALL 0x00011220
MOV EBX,dword ptr [ESP + 0x18]
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0x28],EDX
MOV dword ptr [EAX + 0x14],EDX
MOV dword ptr [ESP],ESI
CALL 0x00011220
MOV EBX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
TEST EDI,EDI
MOV EDX,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0x20]
MOV dword ptr [EBX + 0x18],EAX
JZ 0x00028350
TEST ECX,ECX
JZ 0x00028350
TEST EDX,EDX
JZ 0x00028350
TEST EAX,EAX
JZ 0x00028350
MOV EAX,dword ptr [ESP + 0x10]
SUB ESP,0xc
MOV EDI,dword ptr [EAX + 0x18]
LEA EAX,[EDI*0x4 + 0x0]
PUSH EAX
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x00011220
MOV EBX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV dword ptr [EBX + 0x84],EAX
MOV EBX,dword ptr [EBX + 0x34]
TEST EAX,EAX
JZ 0x00028098
XOR EDX,EDX
TEST EDI,EDI
JZ 0x00027fe2
LEA ESI,[ESI]
MOV dword ptr [EAX + EDX*0x4],EDX
ADD EDX,0x1
CMP EDX,EDI
JNZ 0x00027fd8
MOVZX ECX,byte ptr [EBX + 0x18]
MOV EDX,dword ptr [EBX + 0x4]
MOV ESI,EBX
MOV dword ptr [ESP + 0x18],EBP
JMP 0x00028010
CMP CL,0x11
JZ 0x00028140
TEST EDX,EDX
JZ 0x00028038
MOVZX ECX,byte ptr [EDX + 0x18]
MOV EBP,dword ptr [EDX + 0x4]
MOV ESI,EDX
MOV EDX,EBP
CMP CL,0x4
JNZ 0x00027ff8
MOV ECX,dword ptr [ESI + 0x14]
MOV EBP,0x1
MOV ECX,dword ptr [EAX + ECX*0x4]
SHL EBP,CL
MOV dword ptr [ESI + 0x14],ECX
MOV ECX,EBP
MOV EBP,dword ptr [ESP + 0xc]
OR dword ptr [EBP + 0x50],ECX
TEST EDX,EDX
JNZ 0x00028005
LEA ESI,[ESI]
XOR ECX,ECX
JMP 0x00028042
MOV ESI,EDX
MOV EDX,dword ptr [ESI + 0x8]
CMP EDX,ECX
JZ 0x0002804d
TEST EDX,EDX
JNZ 0x00028005
MOV EDX,dword ptr [ESI]
MOV ECX,ESI
TEST EDX,EDX
JNZ 0x00028040
MOV EBP,dword ptr [ESP + 0x18]
TEST EDI,EDI
JZ 0x00028074
MOV EDX,dword ptr [EAX]
TEST EDX,EDX
JZ 0x0002806d
JMP 0x00028098
CMP dword ptr [EAX + EDX*0x4],EDX
JNZ 0x00028098
ADD EDX,0x1
CMP EDX,EDI
JNZ 0x00028068
SUB ESP,0xc
PUSH EAX
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x000110a0
MOV EAX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV dword ptr [EAX + 0x84],0x0
MOV EBX,dword ptr [EAX + 0x34]
LEA ESI,[ESI]
XOR EDI,EDI
MOV ECX,EBX
MOV ESI,ECX
MOV EAX,dword ptr [ESI + 0x4]
TEST EAX,EAX
JZ 0x000280ae
MOV ESI,EAX
MOV EAX,dword ptr [ESI + 0x4]
TEST EAX,EAX
JNZ 0x000280a5
MOV ECX,dword ptr [ESI + 0x8]
TEST ECX,ECX
JNZ 0x0002809c
MOV EBX,dword ptr [ESP + 0x14]
JMP 0x000280f4
TEST EAX,EAX
JZ 0x000280d6
CMP byte ptr [EAX + 0x18],0x11
JZ 0x00028128
MOV EAX,dword ptr [ESP + 0x3c]
TEST EAX,EAX
JNZ 0x00028335
MOV EDX,dword ptr [ESI]
TEST EDX,EDX
JZ 0x00028190
MOV EAX,dword ptr [EDX + 0x8]
TEST EAX,EAX
JZ 0x000280ef
CMP ESI,EAX
JNZ 0x00028d80
MOV ECX,dword ptr [EDX + 0x4]
MOV ESI,EDX
MOV dword ptr [ESP + 0x3c],EDI
TEST ECX,ECX
JZ 0x000280c0
CMP byte ptr [ECX + 0x18],0x11
JNZ 0x000280c0
MOV EDX,dword ptr [ESP + 0x10]
MOV EAX,EBX
CALL 0x00020ab0
MOV dword ptr [ESI + 0x4],EAX
TEST EAX,EAX
JZ 0x00028116
MOV dword ptr [EAX],ESI
MOV EAX,dword ptr [ESI + 0x8]
TEST EAX,EAX
JZ 0x000280ca
CMP byte ptr [EAX + 0x18],0x11
JNZ 0x000280ca
LEA ESI,[ESI]
NOP
MOV EDX,dword ptr [ESP + 0x10]
MOV ECX,EAX
MOV EAX,EBX
CALL 0x00020ab0
MOV dword ptr [ESI + 0x8],EAX
TEST EAX,EAX
JZ 0x000280ca
MOV dword ptr [EAX],ESI
JMP 0x000280ca
TEST EDX,EDX
JZ 0x00028038
MOVZX ECX,byte ptr [EDX + 0x18]
MOV EBP,dword ptr [EDX + 0x4]
CMP CL,0x11
JNZ 0x0002800c
MOV ECX,dword ptr [EDX + 0x14]
MOV dword ptr [ESI + 0x4],EBP
TEST EBP,EBP
JZ 0x00028165
MOV dword ptr [EBP],ESI
MOV EDX,dword ptr [ESI + 0x14]
MOV EDX,dword ptr [EAX + EDX*0x4]
MOV dword ptr [EAX + ECX*0x4],EDX
MOV EDX,EBP
CMP ECX,0x1f
JG 0x00028001
MOV EBP,0x1
SHL EBP,CL
MOV ECX,EBP
MOV EBP,dword ptr [ESP + 0xc]
NOT ECX
AND dword ptr [EBP + 0x50],ECX
JMP 0x00028001
MOV ESI,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ESI + 0x34]
LEA ESI,[ESI]
NOP
MOV EBX,EAX
MOV EAX,dword ptr [EAX + 0x4]
TEST EAX,EAX
JNZ 0x000281a0
MOV EAX,dword ptr [EBX + 0x8]
TEST EAX,EAX
JNZ 0x000281a0
JMP 0x000281e4
MOV EAX,dword ptr [EBX + 0x4]
MOV EDX,dword ptr [EAX + 0xc]
MOV EAX,dword ptr [EAX + 0x1c]
MOV dword ptr [EBX + 0xc],EDX
MOV dword ptr [EBX + 0x1c],EAX
MOV EDX,dword ptr [EBX]
TEST EDX,EDX
JZ 0x00028238
MOV EAX,dword ptr [EDX + 0x8]
TEST EAX,EAX
SETZ CL
CMP EBX,EAX
MOV EBX,EDX
MOV EDI,ECX
SETZ CL
MOV EDX,EDI
OR DL,CL
JZ 0x000281a0
CMP byte ptr [EBX + 0x18],0x10
JZ 0x000281b8
MOV EDX,dword ptr [EBX + 0x14]
MOV ECX,dword ptr [EBX + 0x18]
MOV dword ptr [EBX + 0xc],EBX
MOV EAX,ESI
CALL 0x00018d20
MOV dword ptr [EBX + 0x1c],EAX
CMP EAX,-0x1
JZ 0x00028330
CMP byte ptr [EBX + 0x18],0xc
JNZ 0x000281c7
MOV EDX,dword ptr [EBX + 0x14]
MOV ECX,dword ptr [ESI]
AND EDX,0x3ff
MOV EDI,EDX
MOV EDX,dword ptr [ECX + EAX*0x8 + 0x4]
SHL EDI,0x8
AND EDX,0xfffc00ff
OR EDX,EDI
MOV dword ptr [ECX + EAX*0x8 + 0x4],EDX
MOV EDX,dword ptr [EBX]
TEST EDX,EDX
JNZ 0x000281cd
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0xc]
MOV ESI,dword ptr [EAX + 0x34]
MOV EAX,ESI
MOVZX ECX,byte ptr [EAX + 0x18]
MOV EDX,dword ptr [EAX + 0x4]
CMP CL,0xb
JZ 0x00028283
LEA ESI,[ESI]
CMP CL,0x10
JZ 0x00028290
TEST EDX,EDX
JZ 0x0002825f
MOV ECX,dword ptr [EAX + 0x10]
MOV dword ptr [EDX + 0x10],ECX
MOV ECX,dword ptr [EAX + 0x8]
TEST ECX,ECX
JZ 0x00028360
MOV EAX,dword ptr [EAX + 0x10]
TEST EDX,EDX
CMOVZ EDX,ECX
MOV dword ptr [ECX + 0x10],EAX
MOV EAX,EDX
MOVZX ECX,byte ptr [EAX + 0x18]
MOV EDX,dword ptr [EAX + 0x4]
CMP CL,0xb
JNZ 0x00028250
MOV dword ptr [EDX + 0x10],EAX
MOV EAX,EDX
JMP 0x00028277
MOV ECX,dword ptr [EAX + 0x8]
MOV EBX,dword ptr [ECX + 0xc]
MOV dword ptr [EDX + 0x10],EBX
MOV EAX,dword ptr [EAX + 0x10]
MOV dword ptr [ECX + 0x10],EAX
MOV EAX,EDX
JMP 0x00028277
SUB ESP,0x8
PUSH dword ptr [ESP + 0x28]
PUSH ESI
CALL 0x00018140
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00028335
MOVZX EBX,byte ptr [ESP + 0x93]
MOV EDX,dword ptr [EBP + 0x5c]
JMP 0x00027be2
MOV dword ptr [ESP + 0x34],0xc
MOV EAX,EBP
CALL 0x0001c000
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [EAX],0x0
MOV dword ptr [EAX + 0x4],0x0
MOV EAX,dword ptr [ESP + 0x34]
MOV EDI,dword ptr [ESP + 0x9c]
XOR EDI,dword ptr GS:[0x14]
JNZ 0x00028fbb
ADD ESP,0xac
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,0xc
MOV dword ptr [ESP + 0x34],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0xc],EAX
JMP 0x00027c60
MOV dword ptr [ESP + 0x34],0xc
JMP 0x00027c60
TEST EDX,EDX
JNZ 0x00028275
MOV ECX,dword ptr [EAX]
TEST ECX,ECX
JNZ 0x00028372
JMP 0x00028389
MOV ECX,EDX
MOV EDX,dword ptr [ECX + 0x8]
TEST EDX,EDX
JZ 0x00028381
CMP EDX,EAX
JNZ 0x00028275
MOV EDX,dword ptr [ECX]
MOV EAX,ECX
TEST EDX,EDX
JNZ 0x00028370
MOV dword ptr [ESP + 0x24],EBP
MOV EBP,dword ptr [ESP + 0xc]
LEA ESI,[ESI]
MOVZX EDX,byte ptr [ESI + 0x18]
MOV EAX,dword ptr [ESI + 0x1c]
CMP DL,0x10
JA 0x00028478
MOV EDI,dword ptr [ESP + 0x8]
MOVZX ECX,DL
MOV EBX,dword ptr [EDI + ECX*0x4 + 0xffff9174]
ADD EBX,EDI
JMP EBX
SUB ESP,0x8
PUSH 0x1
PUSH 0x20
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x00011440
ADD ESP,0x10
MOV dword ptr [EBP + 0x3c],EAX
TEST EAX,EAX
JZ 0x000282d0
MOV dword ptr [ESP + 0x18],EBP
XOR EDI,EDI
LEA ESI,[ESI]
LEA ESI,[EDI*0x8 + 0x0]
XOR EBP,EBP
JMP 0x0002840f
TEST EDX,EDX
JNZ 0x00028404
MOV EAX,dword ptr [ESP + 0x18]
OR byte ptr [EAX + 0x58],0x8
ADD EBP,0x1
ADD ESI,0x1
CMP EBP,0x20
JZ 0x00028460
SUB ESP,0xc
PUSH ESI
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x000112d0
MOV EDX,ESI
ADD ESP,0x10
AND EDX,0xffffff80
CMP EAX,-0x1
JZ 0x000283f8
MOV ECX,dword ptr [ESP + 0x18]
MOV EBX,dword ptr [ECX + 0x3c]
MOV ECX,EBP
ADD EBX,EDI
MOV dword ptr [ESP + 0x1c],EBX
MOV EBX,0x1
SHL EBX,CL
MOV ECX,EBX
MOV EBX,dword ptr [ESP + 0x1c]
OR dword ptr [EBX],ECX
TEST EDX,EDX
JNZ 0x00028404
CMP EAX,ESI
JNZ 0x000283fc
ADD EBP,0x1
ADD ESI,0x1
CMP EBP,0x20
JNZ 0x0002840f
LEA ESI,[ESI]
ADD EDI,0x4
CMP EDI,0x20
JNZ 0x000283e8
MOV EBP,dword ptr [ESP + 0x18]
JMP 0x00027b27
AND EDX,0x8
JNZ 0x00028fc0
MOV EDX,dword ptr [ESI + 0x10]
MOV ECX,dword ptr [EDX + 0x1c]
MOV EDX,dword ptr [EBP + 0xc]
MOV dword ptr [EDX + EAX*0x4],ECX
MOV EDI,dword ptr [ESI + 0x4]
TEST EDI,EDI
JZ 0x000284a2
MOV ESI,EDI
JMP 0x00028398
MOV ESI,EDX
MOV EDX,dword ptr [ESI + 0x8]
CMP EDX,EDI
SETZ AL
TEST EDX,EDX
SETZ CL
OR AL,CL
JZ 0x00028bf0
MOV EDX,dword ptr [ESI]
MOV EDI,ESI
TEST EDX,EDX
JNZ 0x000284a0
MOV byte ptr [ESP + 0x20],AL
MOV EDI,EBP
XOR ESI,ESI
MOV byte ptr [ESP + 0x18],0x0
MOV dword ptr [ESP + 0xc],EBP
MOV EBP,dword ptr [ESP + 0x24]
LEA ESI,[ESI]
CMP dword ptr [EDI + 0x8],ESI
JZ 0x000284fa
LEA EBX,[ESI + ESI*0x2]
MOV EAX,dword ptr [EDI + 0x18]
SHL EBX,0x2
MOV EAX,dword ptr [EAX + EBX*0x1 + 0x4]
TEST EAX,EAX
JZ 0x00028690
ADD ESI,0x1
CMP dword ptr [EDI + 0x8],ESI
JNZ 0x000284dd
CMP byte ptr [ESP + 0x18],0x0
JZ 0x000286f0
MOV byte ptr [ESP + 0x18],0x0
XOR ESI,ESI
JMP 0x000284dd
SUB ESP,0xc
MOV ECX,ESI
MOV EDX,EDI
PUSH 0x1
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x0001fb10
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00028335
MOV EAX,dword ptr [EDI + 0x18]
ADD ESI,0x1
MOV EAX,dword ptr [EAX + EBX*0x1 + 0x4]
TEST EAX,EAX
JNZ 0x000284d8
SUB ESP,0xc
PUSH dword ptr [ESP + 0x50]
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x000110a0
ADD ESP,0x10
MOVZX EAX,byte ptr [ESP + 0x20]
MOV byte ptr [ESP + 0x18],AL
CMP dword ptr [EDI + 0x8],ESI
JNZ 0x000284dd
JMP 0x00028505
MOV EAX,dword ptr [ESP + 0x10]
TEST byte ptr [EAX + 0x1c],0x10
JNZ 0x00028710
MOV EAX,dword ptr [EAX + 0x18]
TEST EAX,EAX
JZ 0x00028710
MOV EAX,dword ptr [ESP + 0xc]
TEST byte ptr [EAX + 0x58],0x1
JNZ 0x0002871f
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [EAX + 0x4c]
TEST EDI,EDI
JZ 0x00028860
LEA EAX,[ESI + ESI*0x2]
SUB ESP,0xc
SHL EAX,0x2
PUSH EAX
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x00011220
MOV EDI,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV dword ptr [EDI + 0x1c],EAX
TEST EAX,EAX
JZ 0x00028f00
XOR EDX,EDX
MOV ECX,dword ptr [ESP + 0xc]
TEST ESI,ESI
JNZ 0x0002875b
JMP 0x00028860
MOV EAX,dword ptr [ECX + 0x1c]
LEA EBX,[EDX + EDX*0x2]
ADD EDX,0x1
LEA EAX,[EAX + EBX*0x4]
MOV dword ptr [EAX],0x0
MOV dword ptr [EAX + 0x4],0x0
MOV dword ptr [EAX + 0x8],0x0
MOV EAX,dword ptr [ECX + 0x8]
CMP EAX,EDX
JA 0x00028758
TEST EAX,EAX
JZ 0x00028860
MOV ESI,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x20],0x0
MOV dword ptr [ESP + 0x2c],EBP
MOV EDI,dword ptr [ESI + 0x18]
MOV EBP,ESI
MOV dword ptr [ESP + 0xc],EDI
MOV ESI,dword ptr [ESP + 0x20]
LEA EDX,[ESI + ESI*0x2]
LEA EDI,[EDX*0x4 + 0x0]
MOV EDX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x24],EDI
ADD EDX,EDI
MOV EBX,dword ptr [EDX + 0x4]
MOV ECX,dword ptr [EDX + 0x8]
TEST EBX,EBX
JLE 0x00028843
XOR EDI,EDI
JMP 0x000287ee
LEA EBX,[EDX + 0x1]
ADD EDI,0x1
MOV dword ptr [ESI + 0x4],EBX
MOV EBX,dword ptr [ESP + 0x20]
MOV dword ptr [EAX + EDX*0x4],EBX
MOV EAX,dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP + 0x24]
CMP EDI,dword ptr [EAX + EBX*0x1 + 0x4]
JGE 0x00028840
MOV EAX,dword ptr [ECX + EDI*0x4]
LEA EDX,[EAX + EAX*0x2]
MOV EAX,dword ptr [EBP + 0x1c]
LEA ESI,[EAX + EDX*0x4]
MOV EDX,dword ptr [ESI + 0x4]
MOV EAX,dword ptr [ESI + 0x8]
CMP dword ptr [ESI],EDX
JNZ 0x000287d0
ADD EDX,0x1
MOV dword ptr [ESP + 0x28],ECX
SUB ESP,0x8
LEA EBX,[EDX + EDX*0x1]
SHL EDX,0x3
MOV dword ptr [ESI],EBX
PUSH EDX
PUSH EAX
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x00011210
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00028ed0
MOV EBX,dword ptr [EBP + 0x18]
MOV EDX,dword ptr [ESI + 0x4]
MOV dword ptr [ESI + 0x8],EAX
MOV ECX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0xc],EBX
JMP 0x000287d0
MOV EAX,dword ptr [EBP + 0x8]
ADD dword ptr [ESP + 0x20],0x1
MOV EDI,dword ptr [ESP + 0x20]
CMP EAX,EDI
JA 0x000287a0
MOV EBP,dword ptr [ESP + 0x2c]
LEA ESI,[ESI]
NOP
MOVZX EAX,byte ptr [EBP + 0x58]
MOV ESI,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0x34],0x0
SHR AL,0x2
TEST ESI,ESI
SETZ DL
AND AL,DL
JNZ 0x00028b48
MOV EAX,dword ptr [EBP + 0x34]
MOV EAX,dword ptr [EAX + 0xc]
MOV EAX,dword ptr [EAX + 0x1c]
MOV dword ptr [EBP + 0x48],EAX
LEA EDX,[EAX + EAX*0x2]
MOV EAX,dword ptr [EBP + 0x18]
LEA EDI,[EAX + EDX*0x4]
MOV ESI,dword ptr [EDI + 0x4]
MOV dword ptr [ESP + 0x40],ESI
TEST ESI,ESI
JLE 0x00028af0
MOV dword ptr [ESP + 0x3c],ESI
LEA ECX,[ESI*0x4 + 0x0]
SUB ESP,0xc
PUSH ECX
MOV EBX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x1c],ECX
CALL 0x00011220
MOV dword ptr [ESP + 0x54],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00028eb0
SUB ESP,0x4
MOV EDX,dword ptr [EDI + 0x8]
XOR EDI,EDI
MOV ECX,dword ptr [ESP + 0x10]
PUSH ECX
PUSH EDX
PUSH EAX
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x000110c0
MOV EBX,dword ptr [EBP + 0x4c]
MOV dword ptr [ESP + 0x48],0x0
ADD ESP,0x10
TEST EBX,EBX
JLE 0x000289f2
MOV EAX,EDI
MOV EDI,EBP
MOV EBP,EAX
JMP 0x00028917
MOV ESI,dword ptr [ESP + 0x40]
ADD EBP,0x1
CMP ESI,EBP
JLE 0x000289f0
MOV EAX,dword ptr [ESP + 0x44]
MOV EBX,dword ptr [EDI]
MOV ECX,dword ptr [EAX + EBP*0x4]
LEA EDX,[EBX + ECX*0x8]
CMP byte ptr [EDX + 0x4],0x4
MOV dword ptr [ESP + 0xc],EDX
JNZ 0x00028908
XOR EDX,EDX
MOV dword ptr [ESP + 0x18],EBX
MOV dword ptr [ESP + 0x1c],ECX
JMP 0x00028947
ADD EDX,0x1
CMP ESI,EDX
JZ 0x00028908
MOV ECX,dword ptr [EAX + EDX*0x4]
MOV EBX,dword ptr [ESP + 0x18]
LEA ECX,[EBX + ECX*0x8]
CMP byte ptr [ECX + 0x4],0x9
JNZ 0x00028940
MOV EBX,dword ptr [ESP + 0xc]
MOV EBX,dword ptr [EBX]
CMP dword ptr [ECX],EBX
JNZ 0x00028940
MOV ECX,dword ptr [ESP + 0x1c]
SUB ESI,0x1
MOV EBX,0x0
LEA EDX,[ECX + ECX*0x2]
MOV ECX,dword ptr [EDI + 0x14]
LEA EDX,[ECX + EDX*0x4]
MOV EDX,dword ptr [EDX + 0x8]
MOV EDX,dword ptr [EDX]
JZ 0x000289b4
LEA ECX,[ESI + EBX*0x1]
SHR ECX,0x1
CMP EDX,dword ptr [EAX + ECX*0x4]
JG 0x00028ae0
CMP EBX,ECX
JNC 0x000289b4
LEA ESI,[EBX + ECX*0x1]
SHR ESI,0x1
CMP EDX,dword ptr [EAX + ESI*0x4]
JLE 0x000289b0
JMP 0x00028ad0
LEA ECX,[EBX + ESI*0x1]
SHR ECX,0x1
CMP dword ptr [EAX + ECX*0x4],EDX
JL 0x00028ae0
MOV ESI,ECX
CMP EBX,ESI
JC 0x000289a0
CMP dword ptr [EAX + EBX*0x4],EDX
JZ 0x00028908
MOV EAX,dword ptr [EDI + 0x18]
LEA EDX,[EDX + EDX*0x2]
SUB ESP,0x8
LEA EAX,[EAX + EDX*0x4]
PUSH EAX
PUSH dword ptr [ESP + 0x20]
CALL 0x00018fe0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00028ee0
MOV ESI,dword ptr [ESP + 0x40]
MOV EBP,0x1
CMP ESI,EBP
JG 0x00028917
NOP
MOV EBP,EDI
PUSH 0x0
PUSH dword ptr [ESP + 0x18]
PUSH EBP
LEA EBX,[ESP + 0x44]
PUSH EBX
CALL 0x0001c950
ADD ESP,0x10
MOV dword ptr [EBP + 0x24],EAX
TEST EAX,EAX
JZ 0x00028be0
CMP byte ptr [EAX + 0x34],0x0
JS 0x00028b98
MOV dword ptr [EBP + 0x30],EAX
MOV dword ptr [EBP + 0x2c],EAX
MOV dword ptr [EBP + 0x28],EAX
SUB ESP,0xc
PUSH dword ptr [ESP + 0x50]
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x000110a0
ADD ESP,0x10
XOR EAX,EAX
MOV dword ptr [ESP + 0x34],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV EDI,dword ptr [EAX]
MOV EAX,dword ptr [EDI + 0x38]
TEST EAX,EAX
JZ 0x00028a68
LEA ESI,[ESI]
SUB ESP,0xc
MOV ESI,dword ptr [EAX]
PUSH EAX
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x000110a0
MOV EAX,ESI
ADD ESP,0x10
TEST ESI,ESI
JNZ 0x00028a50
SUB ESP,0xc
MOV dword ptr [EDI + 0x38],0x0
MOV dword ptr [EDI + 0x40],0x1f
MOV dword ptr [EDI + 0x34],0x0
PUSH dword ptr [EDI + 0x10]
MOV ESI,dword ptr [ESP + 0x18]
MOV EBX,ESI
CALL 0x000110a0
MOV dword ptr [EDI + 0x10],0x0
POP EDI
PUSH dword ptr [ESP + 0x5c]
CALL 0x000110a0
POP EAX
PUSH dword ptr [ESP + 0x60]
CALL 0x000110a0
ADD ESP,0x10
CMP byte ptr [ESP + 0x93],0x0
JNZ 0x00028b18
MOV EAX,dword ptr [ESP + 0x34]
TEST EAX,EAX
JZ 0x000282f4
JMP 0x000282d8
MOV EBX,ESI
MOV ESI,ECX
MOV ECX,EBX
LEA ESI,[ESI]
LEA ESI,[ESI]
LEA EBX,[ECX + 0x1]
CMP ESI,EBX
JA 0x0002897d
JMP 0x000289b4
MOV dword ptr [ESP + 0x3c],0x0
MOV dword ptr [ESP + 0x40],0x0
MOV dword ptr [ESP + 0x44],0x0
MOV dword ptr [ESP + 0x38],0x0
JMP 0x000289f2
SUB ESP,0xc
PUSH dword ptr [ESP + 0x58]
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x000110a0
ADD ESP,0x10
JMP 0x00028ab6
MOV EAX,ESI
CALL 0x00018420
MOV dword ptr [ESP + 0x34],0x0
JMP 0x00027d86
MOV EBX,dword ptr [ESP + 0x10]
MOV EDX,dword ptr [EBX + 0x14]
TEST EDX,EDX
JNZ 0x00028880
MOV ESI,dword ptr [EBP + 0x8]
TEST ESI,ESI
JZ 0x00028f8d
MOV EDI,dword ptr [EBP]
MOV byte ptr [ESP + 0x1c],0x0
XOR EBX,EBX
MOV dword ptr [ESP + 0xc],EBP
MOV dword ptr [ESP + 0x20],EDI
MOV EDX,EDI
CMP byte ptr [EDX + 0x4],0xc
JA 0x0001147e
MOV EDI,dword ptr [ESP + 0x8]
MOVZX ECX,byte ptr [EDX + 0x4]
MOV EBP,dword ptr [EDI + ECX*0x4 + 0xffff91b8]
ADD EBP,EDI
JMP EBP
PUSH 0x1
MOV EDI,dword ptr [ESP + 0x18]
PUSH EDI
PUSH EBP
PUSH EBX
CALL 0x0001c950
MOV dword ptr [EBP + 0x28],EAX
PUSH 0x2
PUSH EDI
PUSH EBP
PUSH EBX
CALL 0x0001c950
ADD ESP,0x20
MOV dword ptr [EBP + 0x2c],EAX
PUSH 0x6
PUSH EDI
PUSH EBP
PUSH EBX
CALL 0x0001c950
MOV ECX,dword ptr [EBP + 0x28]
ADD ESP,0x10
MOV dword ptr [EBP + 0x30],EAX
TEST ECX,ECX
JZ 0x00028be0
MOV EDX,dword ptr [EBP + 0x2c]
TEST EDX,EDX
JZ 0x00028be0
TEST EAX,EAX
JNZ 0x00028a24
NOP
MOV EAX,dword ptr [ESP + 0x38]
JMP 0x00028a39
MOV EDI,EDX
MOV ESI,EDI
JMP 0x00028398
MOV EAX,dword ptr [ESP + 0x78]
MOV EDI,dword ptr [ESP + 0x64]
CMP dword ptr [ESP + 0x6c],EAX
CMOVLE EAX,dword ptr [ESP + 0x6c]
MOV dword ptr [ESP + 0xc],EAX
CMP EAX,EDI
JLE 0x00028f20
MOV EBX,dword ptr [ESP + 0x8]
CALL 0x00011040
MOV EBX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x14],ESI
MOV ESI,dword ptr [ESP + 0xc]
JMP 0x00028c8b
MOV ECX,dword ptr [EAX]
MOV EDX,dword ptr [ECX + EDX*0x4]
MOV byte ptr [EBX + EDI*0x1],DL
ADD EDI,0x1
CMP ESI,EDI
JZ 0x00028cc0
MOV EBX,dword ptr [ESP + 0x4c]
MOV EDX,dword ptr [ESP + 0x48]
MOV ECX,dword ptr [ESP + 0x88]
ADD EDX,EDI
ADD EDX,dword ptr [ESP + 0x60]
MOVZX EDX,byte ptr [EDX]
TEST ECX,ECX
JZ 0x00028c78
MOVZX ECX,byte ptr [ECX + EDX*0x1]
MOV EDX,dword ptr [EAX]
MOV EDX,dword ptr [EDX + ECX*0x4]
MOV byte ptr [EBX + EDI*0x1],DL
ADD EDI,0x1
CMP ESI,EDI
JNZ 0x00028c87
LEA ESI,[ESI]
LEA ESI,[ESI]
MOV ESI,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x34],0x0
MOV dword ptr [ESP + 0x64],EAX
MOV dword ptr [ESP + 0x68],EAX
JMP 0x00027d86
SUB ESP,0x8
PUSH 0x88
PUSH EBP
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x00011210
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JZ 0x00028f30
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [EAX + 0x4],0x88
MOV dword ptr [EAX],EBP
JMP 0x000279f8
XOR ESI,ESI
MOV EAX,0x1
JMP 0x00027a83
MOV dword ptr [ESP + 0x34],0xc
MOV dword ptr [EBP + 0x34],0x0
JMP 0x00027c60
SUB ESP,0xc
PUSH 0x3e4
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x00011220
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00028f6b
MOV EDX,dword ptr [EDI + 0x38]
MOV EBX,0x1
MOV ESI,0x4
MOV ECX,0x18
MOV dword ptr [EAX],EDX
XOR EDX,EDX
MOV dword ptr [EDI + 0x38],EAX
JMP 0x00027e0d
MOV ECX,EAX
JMP 0x0002809c
MOV dword ptr [ESP + 0x34],0x0
JMP 0x00027d86
SUB ESP,0xc
PUSH 0x3e4
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x00011220
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00028d28
MOV EDX,dword ptr [EDI + 0x38]
MOV ECX,0x1
MOV dword ptr [ESP + 0x28],0x18
MOV dword ptr [ESP + 0x24],0x4
MOV dword ptr [EAX],EDX
XOR EDX,EDX
MOV dword ptr [EDI + 0x38],EAX
JMP 0x00027e8c
MOV EAX,0xc
JMP 0x00028a39
MOV EBP,dword ptr [ESP + 0x2c]
JMP 0x00028330
MOV EBP,EDI
JMP 0x00028a39
MOV EDX,EAX
JMP 0x00027d76
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x34],0xc
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0xc],EAX
JMP 0x00027c60
MOV dword ptr [ESP + 0xc],EDI
JMP 0x00028cc4
MOV EAX,0xc
JMP 0x000282f4
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [EBP + 0x34],0x0
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0xc],EAX
JMP 0x00027c60
MOV EAX,dword ptr [ESP + 0x10]
MOV EBX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0xc],EAX
TEST EBX,EBX
JZ 0x00028d28
XOR ESI,ESI
MOV byte ptr [ESP + 0x20],0x1
JMP 0x00027e67
MOV byte ptr [ESP + 0x1c],0x0
MOV ESI,dword ptr [EBP + 0x4c]
MOVZX EDX,byte ptr [EBP + 0x58]
MOV dword ptr [EBP + 0x5c],0x1
TEST ESI,ESI
SETG AL
OR AL,byte ptr [ESP + 0x1c]
AND EDX,0xfffffff9
AND EAX,0x1
ADD EAX,EAX
OR EAX,EDX
MOV byte ptr [EBP + 0x58],AL
JMP 0x00028880
CALL 0x0002a720
MOV EBX,dword ptr [ESP + 0x8]
LEA EAX,[EBX + 0xffff922c]
PUSH EAX
LEA EAX,[EBX + 0xffff89d4]
PUSH 0x5cc
PUSH EAX
LEA EAX,[EBX + 0xffff9460]
PUSH EAX
CALL 0x00011420
(translation_unit "int FUN_00027990(uint param_1)\n\n{\n  byte bVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  void *pvVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  void *pvVar9;\n  void *pvVar10;\n  void *pvVar11;\n  int *piVar12;\n  undefined4 *puVar13;\n  wint_t wVar14;\n  __int32_t **pp_Var15;\n  int *__ptr;\n  undefined4 *puVar16;\n  char cVar17;\n  uint extraout_ECX;\n  uint uVar18;\n  int iVar19;\n  int iVar20;\n  int *piVar21;\n  int *piVar22;\n  uint uVar23;\n  int *piVar24;\n  int *piVar25;\n  int iVar26;\n  int iVar27;\n  int *piVar28;\n  size_t __size;\n  int *piVar29;\n  undefined4 *puVar30;\n  uint uVar31;\n  uint uVar32;\n  int unaff_EDI;\n  byte *pbVar33;\n  void **ppvVar34;\n  int in_GS_OFFSET;\n  bool bVar35;\n  bool bVar36;\n  byte bVar37;\n  undefined8 uVar38;\n  int *local_b0;\n  uint local_9c;\n  int local_98;\n  int local_94;\n  int local_88;\n  int local_84;\n  int local_80;\n  int local_7c;\n  void *local_78;\n  void *local_74;\n  void *local_70;\n  void *local_6c;\n  void *local_68;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  int local_4c;\n  uint local_44;\n  int local_34;\n  undefined1 local_2c;\n  byte local_2b;\n  byte local_2a;\n  char local_29;\n  int local_24;\n  int local_20;\n  \n  bVar37 = 0;\n  uVar38 = FUN_0002a2ea();\n  pvVar9 = (void *)((ulonglong)uVar38 >> 0x20);\n  piVar3 = (int *)uVar38;\n  __ptr = (int *)*piVar3;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  *(byte *)(piVar3 + 7) = *(byte *)(piVar3 + 7) & 0x90;\n  local_88 = 0;\n  piVar3[3] = param_1;\n  piVar3[2] = 0;\n  piVar3[6] = 0;\n  if ((uint)piVar3[1] < 0x88) {\n    __ptr = (int *)realloc(__ptr,0x88);\n    if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }\n    piVar3[1] = 0x88;\n    *piVar3 = (int)__ptr;\n  }\n  piVar3[2] = 0x88;\n  *__ptr = 0;\n  __ptr[0x21] = 0;\n  puVar8 = (undefined4 *)((uint)(__ptr + 1) & 0xfffffffc);\n  for (uVar18 = (uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2;\n      uVar18 != 0; uVar18 = uVar18 - 1) {\n    *puVar8 = 0;\n    puVar8 = puVar8 + (uint)bVar37 * -2 + 1;\n  }\n  __ptr[0x10] = 0x1f;\n  if (extraout_ECX < 0xaaaaaaa) {\n    iVar7 = extraout_ECX + 1;\n    __ptr[1] = iVar7;\n    pvVar4 = malloc(iVar7 * 8);\n    *__ptr = (int)pvVar4;\n    if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }\n    pvVar4 = calloc(0xc,uVar18);\n    __ptr[0x11] = iVar19;\n    __ptr[8] = (int)pvVar4;\n    sVar5 = __ctype_get_mb_cur_max();\n    __ptr[0x17] = sVar5;\n    pbVar6 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }\n    bVar1 = *(byte *)(__ptr + 0x16);\n    *(byte *)(__ptr + 0x16) = bVar1 & 0xf7;\n    if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }\n    if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }\n  }\nLAB_000282d0:\n  local_88 = 0xc;\n  goto LAB_000282d8;\ncode_r0x00028148:\n  cVar17 = (char)piVar25[6];\n  piVar24 = (int *)piVar25[1];\n  piVar22 = piVar24;\n  if (cVar17 == '\x11') {\n    iVar19 = piVar25[5];\n    piVar29[1] = (int)piVar24;\n    if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }\n    piVar12[iVar19] = piVar12[piVar29[5]];\n    if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }\njoined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar17 = (char)piVar24[6];\n    piVar22 = (int *)piVar24[1];\n    piVar25 = piVar24;\n  }\n  goto LAB_00028010;\n  while (piVar12[iVar19] == iVar19) {\nLAB_0002806d:\n    iVar19 = iVar19 + 1;\n    if (iVar19 == iVar7) goto LAB_00028074;\n  }\nLAB_0002809c:\n  do {\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  } while (piVar21 != (int *)0x0);\n  iVar7 = 0;\n  piVar21 = (int *)0x0;\n  do {\n    local_80 = 0;\n    if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }\n    piVar22 = (int *)*piVar12;\n    if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }\n    piVar21 = (int *)piVar22[2];\n    if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;\n    iVar7 = piVar22[1];\n    piVar12 = piVar22;\n  } while( true );\nLAB_00028074:\n  free(piVar12);\n  local_b0[0x21] = 0;\n  piVar21 = (int *)local_b0[0xd];\n  goto LAB_0002809c;\nLAB_000281a0:\n  do {\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  } while ((undefined4 *)puVar16[2] != (undefined4 *)0x0);\n  do {\n    if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    puVar8 = (undefined4 *)puVar13[2];\n    bVar35 = puVar16 == puVar8;\n    puVar16 = puVar13;\n  } while (puVar8 == (undefined4 *)0x0 || bVar35);\n  goto LAB_000281a0;\nLAB_00028250:\n  if (cVar17 == '\x10') {\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }\n  else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }\n  while( true ) {\n    cVar17 = *(char *)(puVar16 + 6);\n    puVar30 = puVar16 + 1;\n    puVar13 = puVar16;\n    puVar16 = (undefined4 *)*puVar30;\n    if (cVar17 != '\v') break;\nLAB_00028283:\n    puVar16[4] = puVar13;\n  }\n  goto LAB_00028250;\n  while (puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0) {\n    while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }\n  }\n  bVar36 = false;\n  iVar19 = 0;\n  do {\n    if (local_b0[2] == iVar19) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }\n  } while( true );\ncode_r0x000284f2:\n  iVar19 = iVar19 + 1;\n  if (local_b0[2] == iVar19) {\nLAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    iVar19 = 0;\n    bVar36 = false;\n  }\n  goto LAB_000284dd;\nLAB_00028330:\n  iVar7 = 0xc;\nLAB_00028335:\n  local_b0 = (int *)*piVar3;\n  local_88 = iVar7;\nLAB_00027c60:\n  puVar8 = (undefined4 *)local_b0[0xe];\n  while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }\n  local_b0[0xe] = 0;\n  local_b0[0x10] = 0x1f;\n  local_b0[0xd] = 0;\n  free((void *)local_b0[4]);\n  local_b0[4] = 0;\n  free(local_6c);\n  free(local_68);\n  if (local_29 != '\0') {\n    free(local_70);\n  }\n  goto LAB_000282d8;\nLAB_0002897d:\n  do {\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  } while (uVar18 < uVar31);\nLAB_000289b4:\n  if (*(int *)((int)local_78 + uVar18 * 4) == iVar19) {\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }\n  iVar7 = FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc);\n  if (iVar7 != 0) goto LAB_00028a39;\n  iVar7 = 1;\n  iVar19 = local_7c;\n  if (local_7c < 2) goto LAB_000289f2;\n  goto LAB_00028917;\nLAB_0002875b:\n  while( true ) {\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }\n  if (uVar23 != 0) {\n    local_9c = 0;\n    local_b0 = (int *)local_b0[6];\n    do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);\n  }\nLAB_00028860:\n  local_88 = 0;\n  if (((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0)) {\n    if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }\n    __ptr[0x17] = 1;\n    *(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;\n  }\n  iVar7 = *(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c);\n  __ptr[0x12] = iVar7;\n  iVar7 = __ptr[6] + iVar7 * 0xc;\n  iVar19 = *(int *)(iVar7 + 4);\n  if (iVar19 < 1) {\n    local_80 = 0;\n    local_7c = 0;\n    local_78 = (void *)0x0;\n    local_84 = 0;\nLAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);\n    __ptr[9] = iVar19;\n    iVar7 = local_84;\n    if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }\n  }\n  else {\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }\nLAB_00028a39:\n  iVar19 = *piVar3;\n  puVar8 = *(undefined4 **)(iVar19 + 0x38);\n  local_88 = iVar7;\n  while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }\n  *(undefined4 *)(iVar19 + 0x38) = 0;\n  *(undefined4 *)(iVar19 + 0x40) = 0x1f;\n  *(undefined4 *)(iVar19 + 0x34) = 0;\n  free(*(void **)(iVar19 + 0x10));\n  *(undefined4 *)(iVar19 + 0x10) = 0;\n  free(local_6c);\n  free(local_68);\n  if (local_29 != '\0') {\n    free(local_70);\n  }\n  iVar7 = local_88;\n  if (local_88 == 0) goto LAB_000282f4;\nLAB_000282d8:\n  FUN_0001c000();\n  *piVar3 = 0;\n  piVar3[1] = 0;\n  iVar7 = local_88;\nLAB_000282f4:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002a720();\n  }\n  return iVar7;\n}\n\n" (function_definition "int FUN_00027990(uint param_1)\n\n{\n  byte bVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  void *pvVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  void *pvVar9;\n  void *pvVar10;\n  void *pvVar11;\n  int *piVar12;\n  undefined4 *puVar13;\n  wint_t wVar14;\n  __int32_t **pp_Var15;\n  int *__ptr;\n  undefined4 *puVar16;\n  char cVar17;\n  uint extraout_ECX;\n  uint uVar18;\n  int iVar19;\n  int iVar20;\n  int *piVar21;\n  int *piVar22;\n  uint uVar23;\n  int *piVar24;\n  int *piVar25;\n  int iVar26;\n  int iVar27;\n  int *piVar28;\n  size_t __size;\n  int *piVar29;\n  undefined4 *puVar30;\n  uint uVar31;\n  uint uVar32;\n  int unaff_EDI;\n  byte *pbVar33;\n  void **ppvVar34;\n  int in_GS_OFFSET;\n  bool bVar35;\n  bool bVar36;\n  byte bVar37;\n  undefined8 uVar38;\n  int *local_b0;\n  uint local_9c;\n  int local_98;\n  int local_94;\n  int local_88;\n  int local_84;\n  int local_80;\n  int local_7c;\n  void *local_78;\n  void *local_74;\n  void *local_70;\n  void *local_6c;\n  void *local_68;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  int local_4c;\n  uint local_44;\n  int local_34;\n  undefined1 local_2c;\n  byte local_2b;\n  byte local_2a;\n  char local_29;\n  int local_24;\n  int local_20;\n  \n  bVar37 = 0;\n  uVar38 = FUN_0002a2ea();\n  pvVar9 = (void *)((ulonglong)uVar38 >> 0x20);\n  piVar3 = (int *)uVar38;\n  __ptr = (int *)*piVar3;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  *(byte *)(piVar3 + 7) = *(byte *)(piVar3 + 7) & 0x90;\n  local_88 = 0;\n  piVar3[3] = param_1;\n  piVar3[2] = 0;\n  piVar3[6] = 0;\n  if ((uint)piVar3[1] < 0x88) {\n    __ptr = (int *)realloc(__ptr,0x88);\n    if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }\n    piVar3[1] = 0x88;\n    *piVar3 = (int)__ptr;\n  }\n  piVar3[2] = 0x88;\n  *__ptr = 0;\n  __ptr[0x21] = 0;\n  puVar8 = (undefined4 *)((uint)(__ptr + 1) & 0xfffffffc);\n  for (uVar18 = (uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2;\n      uVar18 != 0; uVar18 = uVar18 - 1) {\n    *puVar8 = 0;\n    puVar8 = puVar8 + (uint)bVar37 * -2 + 1;\n  }\n  __ptr[0x10] = 0x1f;\n  if (extraout_ECX < 0xaaaaaaa) {\n    iVar7 = extraout_ECX + 1;\n    __ptr[1] = iVar7;\n    pvVar4 = malloc(iVar7 * 8);\n    *__ptr = (int)pvVar4;\n    if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }\n    pvVar4 = calloc(0xc,uVar18);\n    __ptr[0x11] = iVar19;\n    __ptr[8] = (int)pvVar4;\n    sVar5 = __ctype_get_mb_cur_max();\n    __ptr[0x17] = sVar5;\n    pbVar6 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }\n    bVar1 = *(byte *)(__ptr + 0x16);\n    *(byte *)(__ptr + 0x16) = bVar1 & 0xf7;\n    if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }\n    if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }\n  }\nLAB_000282d0:\n  local_88 = 0xc;\n  goto LAB_000282d8;\ncode_r0x00028148:\n  cVar17 = (char)piVar25[6];\n  piVar24 = (int *)piVar25[1];\n  piVar22 = piVar24;\n  if (cVar17 == '\x11') {\n    iVar19 = piVar25[5];\n    piVar29[1] = (int)piVar24;\n    if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }\n    piVar12[iVar19] = piVar12[piVar29[5]];\n    if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }\njoined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar17 = (char)piVar24[6];\n    piVar22 = (int *)piVar24[1];\n    piVar25 = piVar24;\n  }\n  goto LAB_00028010;\n  while (piVar12[iVar19] == iVar19) {\nLAB_0002806d:\n    iVar19 = iVar19 + 1;\n    if (iVar19 == iVar7) goto LAB_00028074;\n  }\nLAB_0002809c:\n  do {\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  } while (piVar21 != (int *)0x0);\n  iVar7 = 0;\n  piVar21 = (int *)0x0;\n  do {\n    local_80 = 0;\n    if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }\n    piVar22 = (int *)*piVar12;\n    if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }\n    piVar21 = (int *)piVar22[2];\n    if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;\n    iVar7 = piVar22[1];\n    piVar12 = piVar22;\n  } while( true );\nLAB_00028074:\n  free(piVar12);\n  local_b0[0x21] = 0;\n  piVar21 = (int *)local_b0[0xd];\n  goto LAB_0002809c;\nLAB_000281a0:\n  do {\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  } while ((undefined4 *)puVar16[2] != (undefined4 *)0x0);\n  do {\n    if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    puVar8 = (undefined4 *)puVar13[2];\n    bVar35 = puVar16 == puVar8;\n    puVar16 = puVar13;\n  } while (puVar8 == (undefined4 *)0x0 || bVar35);\n  goto LAB_000281a0;\nLAB_00028250:\n  if (cVar17 == '\x10') {\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }\n  else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }\n  while( true ) {\n    cVar17 = *(char *)(puVar16 + 6);\n    puVar30 = puVar16 + 1;\n    puVar13 = puVar16;\n    puVar16 = (undefined4 *)*puVar30;\n    if (cVar17 != '\v') break;\nLAB_00028283:\n    puVar16[4] = puVar13;\n  }\n  goto LAB_00028250;\n  while (puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0) {\n    while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }\n  }\n  bVar36 = false;\n  iVar19 = 0;\n  do {\n    if (local_b0[2] == iVar19) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }\n  } while( true );\ncode_r0x000284f2:\n  iVar19 = iVar19 + 1;\n  if (local_b0[2] == iVar19) {\nLAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    iVar19 = 0;\n    bVar36 = false;\n  }\n  goto LAB_000284dd;\nLAB_00028330:\n  iVar7 = 0xc;\nLAB_00028335:\n  local_b0 = (int *)*piVar3;\n  local_88 = iVar7;\nLAB_00027c60:\n  puVar8 = (undefined4 *)local_b0[0xe];\n  while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }\n  local_b0[0xe] = 0;\n  local_b0[0x10] = 0x1f;\n  local_b0[0xd] = 0;\n  free((void *)local_b0[4]);\n  local_b0[4] = 0;\n  free(local_6c);\n  free(local_68);\n  if (local_29 != '\0') {\n    free(local_70);\n  }\n  goto LAB_000282d8;\nLAB_0002897d:\n  do {\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  } while (uVar18 < uVar31);\nLAB_000289b4:\n  if (*(int *)((int)local_78 + uVar18 * 4) == iVar19) {\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }\n  iVar7 = FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc);\n  if (iVar7 != 0) goto LAB_00028a39;\n  iVar7 = 1;\n  iVar19 = local_7c;\n  if (local_7c < 2) goto LAB_000289f2;\n  goto LAB_00028917;\nLAB_0002875b:\n  while( true ) {\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }\n  if (uVar23 != 0) {\n    local_9c = 0;\n    local_b0 = (int *)local_b0[6];\n    do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);\n  }\nLAB_00028860:\n  local_88 = 0;\n  if (((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0)) {\n    if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }\n    __ptr[0x17] = 1;\n    *(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;\n  }\n  iVar7 = *(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c);\n  __ptr[0x12] = iVar7;\n  iVar7 = __ptr[6] + iVar7 * 0xc;\n  iVar19 = *(int *)(iVar7 + 4);\n  if (iVar19 < 1) {\n    local_80 = 0;\n    local_7c = 0;\n    local_78 = (void *)0x0;\n    local_84 = 0;\nLAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);\n    __ptr[9] = iVar19;\n    iVar7 = local_84;\n    if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }\n  }\n  else {\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }\nLAB_00028a39:\n  iVar19 = *piVar3;\n  puVar8 = *(undefined4 **)(iVar19 + 0x38);\n  local_88 = iVar7;\n  while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }\n  *(undefined4 *)(iVar19 + 0x38) = 0;\n  *(undefined4 *)(iVar19 + 0x40) = 0x1f;\n  *(undefined4 *)(iVar19 + 0x34) = 0;\n  free(*(void **)(iVar19 + 0x10));\n  *(undefined4 *)(iVar19 + 0x10) = 0;\n  free(local_6c);\n  free(local_68);\n  if (local_29 != '\0') {\n    free(local_70);\n  }\n  iVar7 = local_88;\n  if (local_88 == 0) goto LAB_000282f4;\nLAB_000282d8:\n  FUN_0001c000();\n  *piVar3 = 0;\n  piVar3[1] = 0;\n  iVar7 = local_88;\nLAB_000282f4:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002a720();\n  }\n  return iVar7;\n}" primitive_type (function_declarator "FUN_00027990(uint param_1)" identifier (parameter_list "(uint param_1)" ( (parameter_declaration "uint param_1" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  void *pvVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  void *pvVar9;\n  void *pvVar10;\n  void *pvVar11;\n  int *piVar12;\n  undefined4 *puVar13;\n  wint_t wVar14;\n  __int32_t **pp_Var15;\n  int *__ptr;\n  undefined4 *puVar16;\n  char cVar17;\n  uint extraout_ECX;\n  uint uVar18;\n  int iVar19;\n  int iVar20;\n  int *piVar21;\n  int *piVar22;\n  uint uVar23;\n  int *piVar24;\n  int *piVar25;\n  int iVar26;\n  int iVar27;\n  int *piVar28;\n  size_t __size;\n  int *piVar29;\n  undefined4 *puVar30;\n  uint uVar31;\n  uint uVar32;\n  int unaff_EDI;\n  byte *pbVar33;\n  void **ppvVar34;\n  int in_GS_OFFSET;\n  bool bVar35;\n  bool bVar36;\n  byte bVar37;\n  undefined8 uVar38;\n  int *local_b0;\n  uint local_9c;\n  int local_98;\n  int local_94;\n  int local_88;\n  int local_84;\n  int local_80;\n  int local_7c;\n  void *local_78;\n  void *local_74;\n  void *local_70;\n  void *local_6c;\n  void *local_68;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  int local_4c;\n  uint local_44;\n  int local_34;\n  undefined1 local_2c;\n  byte local_2b;\n  byte local_2a;\n  char local_29;\n  int local_24;\n  int local_20;\n  \n  bVar37 = 0;\n  uVar38 = FUN_0002a2ea();\n  pvVar9 = (void *)((ulonglong)uVar38 >> 0x20);\n  piVar3 = (int *)uVar38;\n  __ptr = (int *)*piVar3;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  *(byte *)(piVar3 + 7) = *(byte *)(piVar3 + 7) & 0x90;\n  local_88 = 0;\n  piVar3[3] = param_1;\n  piVar3[2] = 0;\n  piVar3[6] = 0;\n  if ((uint)piVar3[1] < 0x88) {\n    __ptr = (int *)realloc(__ptr,0x88);\n    if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }\n    piVar3[1] = 0x88;\n    *piVar3 = (int)__ptr;\n  }\n  piVar3[2] = 0x88;\n  *__ptr = 0;\n  __ptr[0x21] = 0;\n  puVar8 = (undefined4 *)((uint)(__ptr + 1) & 0xfffffffc);\n  for (uVar18 = (uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2;\n      uVar18 != 0; uVar18 = uVar18 - 1) {\n    *puVar8 = 0;\n    puVar8 = puVar8 + (uint)bVar37 * -2 + 1;\n  }\n  __ptr[0x10] = 0x1f;\n  if (extraout_ECX < 0xaaaaaaa) {\n    iVar7 = extraout_ECX + 1;\n    __ptr[1] = iVar7;\n    pvVar4 = malloc(iVar7 * 8);\n    *__ptr = (int)pvVar4;\n    if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }\n    pvVar4 = calloc(0xc,uVar18);\n    __ptr[0x11] = iVar19;\n    __ptr[8] = (int)pvVar4;\n    sVar5 = __ctype_get_mb_cur_max();\n    __ptr[0x17] = sVar5;\n    pbVar6 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }\n    bVar1 = *(byte *)(__ptr + 0x16);\n    *(byte *)(__ptr + 0x16) = bVar1 & 0xf7;\n    if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }\n    if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }\n  }\nLAB_000282d0:\n  local_88 = 0xc;\n  goto LAB_000282d8;\ncode_r0x00028148:\n  cVar17 = (char)piVar25[6];\n  piVar24 = (int *)piVar25[1];\n  piVar22 = piVar24;\n  if (cVar17 == '\x11') {\n    iVar19 = piVar25[5];\n    piVar29[1] = (int)piVar24;\n    if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }\n    piVar12[iVar19] = piVar12[piVar29[5]];\n    if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }\njoined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar17 = (char)piVar24[6];\n    piVar22 = (int *)piVar24[1];\n    piVar25 = piVar24;\n  }\n  goto LAB_00028010;\n  while (piVar12[iVar19] == iVar19) {\nLAB_0002806d:\n    iVar19 = iVar19 + 1;\n    if (iVar19 == iVar7) goto LAB_00028074;\n  }\nLAB_0002809c:\n  do {\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  } while (piVar21 != (int *)0x0);\n  iVar7 = 0;\n  piVar21 = (int *)0x0;\n  do {\n    local_80 = 0;\n    if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }\n    piVar22 = (int *)*piVar12;\n    if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }\n    piVar21 = (int *)piVar22[2];\n    if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;\n    iVar7 = piVar22[1];\n    piVar12 = piVar22;\n  } while( true );\nLAB_00028074:\n  free(piVar12);\n  local_b0[0x21] = 0;\n  piVar21 = (int *)local_b0[0xd];\n  goto LAB_0002809c;\nLAB_000281a0:\n  do {\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  } while ((undefined4 *)puVar16[2] != (undefined4 *)0x0);\n  do {\n    if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    puVar8 = (undefined4 *)puVar13[2];\n    bVar35 = puVar16 == puVar8;\n    puVar16 = puVar13;\n  } while (puVar8 == (undefined4 *)0x0 || bVar35);\n  goto LAB_000281a0;\nLAB_00028250:\n  if (cVar17 == '\x10') {\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }\n  else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }\n  while( true ) {\n    cVar17 = *(char *)(puVar16 + 6);\n    puVar30 = puVar16 + 1;\n    puVar13 = puVar16;\n    puVar16 = (undefined4 *)*puVar30;\n    if (cVar17 != '\v') break;\nLAB_00028283:\n    puVar16[4] = puVar13;\n  }\n  goto LAB_00028250;\n  while (puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0) {\n    while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }\n  }\n  bVar36 = false;\n  iVar19 = 0;\n  do {\n    if (local_b0[2] == iVar19) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }\n  } while( true );\ncode_r0x000284f2:\n  iVar19 = iVar19 + 1;\n  if (local_b0[2] == iVar19) {\nLAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    iVar19 = 0;\n    bVar36 = false;\n  }\n  goto LAB_000284dd;\nLAB_00028330:\n  iVar7 = 0xc;\nLAB_00028335:\n  local_b0 = (int *)*piVar3;\n  local_88 = iVar7;\nLAB_00027c60:\n  puVar8 = (undefined4 *)local_b0[0xe];\n  while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }\n  local_b0[0xe] = 0;\n  local_b0[0x10] = 0x1f;\n  local_b0[0xd] = 0;\n  free((void *)local_b0[4]);\n  local_b0[4] = 0;\n  free(local_6c);\n  free(local_68);\n  if (local_29 != '\0') {\n    free(local_70);\n  }\n  goto LAB_000282d8;\nLAB_0002897d:\n  do {\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  } while (uVar18 < uVar31);\nLAB_000289b4:\n  if (*(int *)((int)local_78 + uVar18 * 4) == iVar19) {\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }\n  iVar7 = FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc);\n  if (iVar7 != 0) goto LAB_00028a39;\n  iVar7 = 1;\n  iVar19 = local_7c;\n  if (local_7c < 2) goto LAB_000289f2;\n  goto LAB_00028917;\nLAB_0002875b:\n  while( true ) {\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }\n  if (uVar23 != 0) {\n    local_9c = 0;\n    local_b0 = (int *)local_b0[6];\n    do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);\n  }\nLAB_00028860:\n  local_88 = 0;\n  if (((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0)) {\n    if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }\n    __ptr[0x17] = 1;\n    *(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;\n  }\n  iVar7 = *(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c);\n  __ptr[0x12] = iVar7;\n  iVar7 = __ptr[6] + iVar7 * 0xc;\n  iVar19 = *(int *)(iVar7 + 4);\n  if (iVar19 < 1) {\n    local_80 = 0;\n    local_7c = 0;\n    local_78 = (void *)0x0;\n    local_84 = 0;\nLAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);\n    __ptr[9] = iVar19;\n    iVar7 = local_84;\n    if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }\n  }\n  else {\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }\nLAB_00028a39:\n  iVar19 = *piVar3;\n  puVar8 = *(undefined4 **)(iVar19 + 0x38);\n  local_88 = iVar7;\n  while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }\n  *(undefined4 *)(iVar19 + 0x38) = 0;\n  *(undefined4 *)(iVar19 + 0x40) = 0x1f;\n  *(undefined4 *)(iVar19 + 0x34) = 0;\n  free(*(void **)(iVar19 + 0x10));\n  *(undefined4 *)(iVar19 + 0x10) = 0;\n  free(local_6c);\n  free(local_68);\n  if (local_29 != '\0') {\n    free(local_70);\n  }\n  iVar7 = local_88;\n  if (local_88 == 0) goto LAB_000282f4;\nLAB_000282d8:\n  FUN_0001c000();\n  *piVar3 = 0;\n  piVar3[1] = 0;\n  iVar7 = local_88;\nLAB_000282f4:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002a720();\n  }\n  return iVar7;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "void *pvVar4;" primitive_type (pointer_declarator "*pvVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "void *pvVar9;" primitive_type (pointer_declarator "*pvVar9" * identifier) ;) (declaration "void *pvVar10;" primitive_type (pointer_declarator "*pvVar10" * identifier) ;) (declaration "void *pvVar11;" primitive_type (pointer_declarator "*pvVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "wint_t wVar14;" type_identifier identifier ;) (declaration "__int32_t **pp_Var15;" type_identifier (pointer_declarator "**pp_Var15" * (pointer_declarator "*pp_Var15" * identifier)) ;) (declaration "int *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined4 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "char cVar17;" primitive_type identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int *piVar21;" primitive_type (pointer_declarator "*piVar21" * identifier) ;) (declaration "int *piVar22;" primitive_type (pointer_declarator "*piVar22" * identifier) ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int *piVar24;" primitive_type (pointer_declarator "*piVar24" * identifier) ;) (declaration "int *piVar25;" primitive_type (pointer_declarator "*piVar25" * identifier) ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "int *piVar28;" primitive_type (pointer_declarator "*piVar28" * identifier) ;) (declaration "size_t __size;" primitive_type identifier ;) (declaration "int *piVar29;" primitive_type (pointer_declarator "*piVar29" * identifier) ;) (declaration "undefined4 *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "uint uVar31;" type_identifier identifier ;) (declaration "uint uVar32;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "byte *pbVar33;" type_identifier (pointer_declarator "*pbVar33" * identifier) ;) (declaration "void **ppvVar34;" primitive_type (pointer_declarator "**ppvVar34" * (pointer_declarator "*ppvVar34" * identifier)) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar35;" primitive_type identifier ;) (declaration "bool bVar36;" primitive_type identifier ;) (declaration "byte bVar37;" type_identifier identifier ;) (declaration "undefined8 uVar38;" type_identifier identifier ;) (declaration "int *local_b0;" primitive_type (pointer_declarator "*local_b0" * identifier) ;) (declaration "uint local_9c;" type_identifier identifier ;) (declaration "int local_98;" primitive_type identifier ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "void *local_78;" primitive_type (pointer_declarator "*local_78" * identifier) ;) (declaration "void *local_74;" primitive_type (pointer_declarator "*local_74" * identifier) ;) (declaration "void *local_70;" primitive_type (pointer_declarator "*local_70" * identifier) ;) (declaration "void *local_6c;" primitive_type (pointer_declarator "*local_6c" * identifier) ;) (declaration "void *local_68;" primitive_type (pointer_declarator "*local_68" * identifier) ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "undefined1 local_2c;" type_identifier identifier ;) (declaration "byte local_2b;" type_identifier identifier ;) (declaration "byte local_2a;" type_identifier identifier ;) (declaration "char local_29;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "bVar37 = 0;" (assignment_expression "bVar37 = 0" identifier = number_literal) ;) (expression_statement "uVar38 = FUN_0002a2ea();" (assignment_expression "uVar38 = FUN_0002a2ea()" identifier = (call_expression "FUN_0002a2ea()" identifier (argument_list "()" ( )))) ;) (expression_statement "pvVar9 = (void *)((ulonglong)uVar38 >> 0x20);" (assignment_expression "pvVar9 = (void *)((ulonglong)uVar38 >> 0x20)" identifier = (cast_expression "(void *)((ulonglong)uVar38 >> 0x20)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar38 >> 0x20)" ( (binary_expression "(ulonglong)uVar38 >> 0x20" (cast_expression "(ulonglong)uVar38" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar3 = (int *)uVar38;" (assignment_expression "piVar3 = (int *)uVar38" identifier = (cast_expression "(int *)uVar38" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "__ptr = (int *)*piVar3;" (assignment_expression "__ptr = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(byte *)(piVar3 + 7) = *(byte *)(piVar3 + 7) & 0x90;" (assignment_expression "*(byte *)(piVar3 + 7) = *(byte *)(piVar3 + 7) & 0x90" (pointer_expression "*(byte *)(piVar3 + 7)" * (cast_expression "(byte *)(piVar3 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 7)" ( (binary_expression "piVar3 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(piVar3 + 7) & 0x90" (pointer_expression "*(byte *)(piVar3 + 7)" * (cast_expression "(byte *)(piVar3 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 7)" ( (binary_expression "piVar3 + 7" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (expression_statement "piVar3[3] = param_1;" (assignment_expression "piVar3[3] = param_1" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar3[2] = 0;" (assignment_expression "piVar3[2] = 0" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar3[6] = 0;" (assignment_expression "piVar3[6] = 0" (subscript_expression "piVar3[6]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((uint)piVar3[1] < 0x88) {\n    __ptr = (int *)realloc(__ptr,0x88);\n    if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }\n    piVar3[1] = 0x88;\n    *piVar3 = (int)__ptr;\n  }" if (parenthesized_expression "((uint)piVar3[1] < 0x88)" ( (binary_expression "(uint)piVar3[1] < 0x88" (cast_expression "(uint)piVar3[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar3[1]" identifier [ number_literal ])) < number_literal) )) (compound_statement "{\n    __ptr = (int *)realloc(__ptr,0x88);\n    if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }\n    piVar3[1] = 0x88;\n    *piVar3 = (int)__ptr;\n  }" { (expression_statement "__ptr = (int *)realloc(__ptr,0x88);" (assignment_expression "__ptr = (int *)realloc(__ptr,0x88)" identifier = (cast_expression "(int *)realloc(__ptr,0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "realloc(__ptr,0x88)" identifier (argument_list "(__ptr,0x88)" ( identifier , number_literal ))))) ;) (if_statement "if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }" if (parenthesized_expression "(__ptr == (int *)0x0)" ( (binary_expression "__ptr == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }" { (expression_statement "iVar7 = 0xc;" (assignment_expression "iVar7 = 0xc" identifier = number_literal) ;) (goto_statement "goto LAB_000282f4;" goto statement_identifier ;) })) (expression_statement "piVar3[1] = 0x88;" (assignment_expression "piVar3[1] = 0x88" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar3 = (int)__ptr;" (assignment_expression "*piVar3 = (int)__ptr" (pointer_expression "*piVar3" * identifier) = (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "piVar3[2] = 0x88;" (assignment_expression "piVar3[2] = 0x88" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*__ptr = 0;" (assignment_expression "*__ptr = 0" (pointer_expression "*__ptr" * identifier) = number_literal) ;) (expression_statement "__ptr[0x21] = 0;" (assignment_expression "__ptr[0x21] = 0" (subscript_expression "__ptr[0x21]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8 = (undefined4 *)((uint)(__ptr + 1) & 0xfffffffc);" (assignment_expression "puVar8 = (undefined4 *)((uint)(__ptr + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(__ptr + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(__ptr + 1) & 0xfffffffc)" ( (binary_expression "(uint)(__ptr + 1) & 0xfffffffc" (call_expression "(uint)(__ptr + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(__ptr + 1)" ( (binary_expression "__ptr + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar18 = (uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2;\n      uVar18 != 0; uVar18 = uVar18 - 1) {\n    *puVar8 = 0;\n    puVar8 = puVar8 + (uint)bVar37 * -2 + 1;\n  }" for ( (assignment_expression "uVar18 = (uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc)))" ( (binary_expression "(int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))" (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))" ( (binary_expression "0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(__ptr + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(__ptr + 1) & 0xfffffffc)" ( (binary_expression "(uint)(__ptr + 1) & 0xfffffffc" (call_expression "(uint)(__ptr + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(__ptr + 1)" ( (binary_expression "__ptr + 1" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar18 != 0" identifier != number_literal) ; (assignment_expression "uVar18 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ) (compound_statement "{\n    *puVar8 = 0;\n    puVar8 = puVar8 + (uint)bVar37 * -2 + 1;\n  }" { (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (expression_statement "puVar8 = puVar8 + (uint)bVar37 * -2 + 1;" (assignment_expression "puVar8 = puVar8 + (uint)bVar37 * -2 + 1" identifier = (binary_expression "puVar8 + (uint)bVar37 * -2 + 1" (binary_expression "puVar8 + (uint)bVar37 * -2" identifier + (binary_expression "(uint)bVar37 * -2" (cast_expression "(uint)bVar37" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "__ptr[0x10] = 0x1f;" (assignment_expression "__ptr[0x10] = 0x1f" (subscript_expression "__ptr[0x10]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (extraout_ECX < 0xaaaaaaa) {\n    iVar7 = extraout_ECX + 1;\n    __ptr[1] = iVar7;\n    pvVar4 = malloc(iVar7 * 8);\n    *__ptr = (int)pvVar4;\n    if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }\n    pvVar4 = calloc(0xc,uVar18);\n    __ptr[0x11] = iVar19;\n    __ptr[8] = (int)pvVar4;\n    sVar5 = __ctype_get_mb_cur_max();\n    __ptr[0x17] = sVar5;\n    pbVar6 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }\n    bVar1 = *(byte *)(__ptr + 0x16);\n    *(byte *)(__ptr + 0x16) = bVar1 & 0xf7;\n    if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }\n    if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }\n  }" if (parenthesized_expression "(extraout_ECX < 0xaaaaaaa)" ( (binary_expression "extraout_ECX < 0xaaaaaaa" identifier < number_literal) )) (compound_statement "{\n    iVar7 = extraout_ECX + 1;\n    __ptr[1] = iVar7;\n    pvVar4 = malloc(iVar7 * 8);\n    *__ptr = (int)pvVar4;\n    if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }\n    pvVar4 = calloc(0xc,uVar18);\n    __ptr[0x11] = iVar19;\n    __ptr[8] = (int)pvVar4;\n    sVar5 = __ctype_get_mb_cur_max();\n    __ptr[0x17] = sVar5;\n    pbVar6 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }\n    bVar1 = *(byte *)(__ptr + 0x16);\n    *(byte *)(__ptr + 0x16) = bVar1 & 0xf7;\n    if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }\n    if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }\n  }" { (expression_statement "iVar7 = extraout_ECX + 1;" (assignment_expression "iVar7 = extraout_ECX + 1" identifier = (binary_expression "extraout_ECX + 1" identifier + number_literal)) ;) (expression_statement "__ptr[1] = iVar7;" (assignment_expression "__ptr[1] = iVar7" (subscript_expression "__ptr[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pvVar4 = malloc(iVar7 * 8);" (assignment_expression "pvVar4 = malloc(iVar7 * 8)" identifier = (call_expression "malloc(iVar7 * 8)" identifier (argument_list "(iVar7 * 8)" ( (binary_expression "iVar7 * 8" identifier * number_literal) )))) ;) (expression_statement "*__ptr = (int)pvVar4;" (assignment_expression "*__ptr = (int)pvVar4" (pointer_expression "*__ptr" * identifier) = (cast_expression "(int)pvVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }" if (parenthesized_expression "(extraout_ECX == 0)" ( (binary_expression "extraout_ECX == 0" identifier == number_literal) )) (compound_statement "{\n      iVar19 = 0;\n      uVar18 = 1;\n    }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }" else (compound_statement "{\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }" { (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" identifier = number_literal) ;) (do_statement "do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);" do (compound_statement "{\n        uVar18 = uVar18 * 2;\n      }" { (expression_statement "uVar18 = uVar18 * 2;" (assignment_expression "uVar18 = uVar18 * 2" identifier = (binary_expression "uVar18 * 2" identifier * number_literal)) ;) }) while (parenthesized_expression "(uVar18 <= extraout_ECX)" ( (binary_expression "uVar18 <= extraout_ECX" identifier <= identifier) )) ;) (expression_statement "iVar19 = uVar18 - 1;" (assignment_expression "iVar19 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) }))) (expression_statement "pvVar4 = calloc(0xc,uVar18);" (assignment_expression "pvVar4 = calloc(0xc,uVar18)" identifier = (call_expression "calloc(0xc,uVar18)" identifier (argument_list "(0xc,uVar18)" ( number_literal , identifier )))) ;) (expression_statement "__ptr[0x11] = iVar19;" (assignment_expression "__ptr[0x11] = iVar19" (subscript_expression "__ptr[0x11]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__ptr[8] = (int)pvVar4;" (assignment_expression "__ptr[8] = (int)pvVar4" (subscript_expression "__ptr[8]" identifier [ number_literal ]) = (cast_expression "(int)pvVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "sVar5 = __ctype_get_mb_cur_max();" (assignment_expression "sVar5 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;) (expression_statement "__ptr[0x17] = sVar5;" (assignment_expression "__ptr[0x17] = sVar5" (subscript_expression "__ptr[0x17]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pbVar6 = (byte *)nl_langinfo(0xe);" (assignment_expression "pbVar6 = (byte *)nl_langinfo(0xe)" identifier = (cast_expression "(byte *)nl_langinfo(0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "nl_langinfo(0xe)" identifier (argument_list "(0xe)" ( number_literal ))))) ;) (if_statement "if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }" if (parenthesized_expression "((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       )" ( (binary_expression "(((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)" (parenthesized_expression "(((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54))" ( (binary_expression "((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)" (parenthesized_expression "((*pbVar6 & 0xdf) == 0x55)" ( (binary_expression "(*pbVar6 & 0xdf) == 0x55" (parenthesized_expression "(*pbVar6 & 0xdf)" ( (binary_expression "*pbVar6 & 0xdf" (pointer_expression "*pbVar6" * identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "((pbVar6[1] & 0xdf) == 0x54)" ( (binary_expression "(pbVar6[1] & 0xdf) == 0x54" (parenthesized_expression "(pbVar6[1] & 0xdf)" ( (binary_expression "pbVar6[1] & 0xdf" (subscript_expression "pbVar6[1]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((pbVar6[2] & 0xdf) == 0x46)" ( (binary_expression "(pbVar6[2] & 0xdf) == 0x46" (parenthesized_expression "(pbVar6[2] & 0xdf)" ( (binary_expression "pbVar6[2] & 0xdf" (subscript_expression "pbVar6[2]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }" { (expression_statement "bVar35 = pbVar6[3] < 0x2d;" (assignment_expression "bVar35 = pbVar6[3] < 0x2d" identifier = (binary_expression "pbVar6[3] < 0x2d" (subscript_expression "pbVar6[3]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar36 = pbVar6[3] == 0x2d;" (assignment_expression "bVar36 = pbVar6[3] == 0x2d" identifier = (binary_expression "pbVar6[3] == 0x2d" (subscript_expression "pbVar6[3]" identifier [ number_literal ]) == number_literal)) ;) (expression_statement "iVar19 = 2;" (assignment_expression "iVar19 = 2" identifier = number_literal) ;) (expression_statement "pbVar6 = pbVar6 + bVar36 + 3;" (assignment_expression "pbVar6 = pbVar6 + bVar36 + 3" identifier = (binary_expression "pbVar6 + bVar36 + 3" (binary_expression "pbVar6 + bVar36" identifier + identifier) + number_literal)) ;) (expression_statement "pbVar33 = (byte *)(unaff_EDI + 0x504b);" (assignment_expression "pbVar33 = (byte *)(unaff_EDI + 0x504b)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x504b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x504b)" ( (binary_expression "unaff_EDI + 0x504b" identifier + number_literal) )))) ;) (do_statement "do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);" do (compound_statement "{\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      }" { (if_statement "if (iVar19 == 0) break;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar19 = iVar19 + -1;" (assignment_expression "iVar19 = iVar19 + -1" identifier = (binary_expression "iVar19 + -1" identifier + number_literal)) ;) (expression_statement "bVar35 = *pbVar6 < *pbVar33;" (assignment_expression "bVar35 = *pbVar6 < *pbVar33" identifier = (binary_expression "*pbVar6 < *pbVar33" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar33" * identifier))) ;) (expression_statement "bVar36 = *pbVar6 == *pbVar33;" (assignment_expression "bVar36 = *pbVar6 == *pbVar33" identifier = (binary_expression "*pbVar6 == *pbVar33" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar33" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1" identifier = (binary_expression "pbVar6 + (uint)bVar37 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar37 * -2" identifier + (binary_expression "(uint)bVar37 * -2" (cast_expression "(uint)bVar37" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;" (assignment_expression "pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1" identifier = (binary_expression "pbVar33 + (uint)bVar37 * -2 + 1" (binary_expression "pbVar33 + (uint)bVar37 * -2" identifier + (binary_expression "(uint)bVar37 * -2" (cast_expression "(uint)bVar37" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar36)" ( identifier )) ;) (if_statement "if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }" if (parenthesized_expression "((!bVar35 && !bVar36) == bVar35)" ( (binary_expression "(!bVar35 && !bVar36) == bVar35" (parenthesized_expression "(!bVar35 && !bVar36)" ( (binary_expression "!bVar35 && !bVar36" (unary_expression "!bVar35" ! identifier) && (unary_expression "!bVar36" ! identifier)) )) == identifier) )) (compound_statement "{\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }" { (expression_statement "*(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;" (assignment_expression "*(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) = (binary_expression "*(byte *)(__ptr + 0x16) | 4" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) | number_literal)) ;) })) })) (expression_statement "bVar1 = *(byte *)(__ptr + 0x16);" (assignment_expression "bVar1 = *(byte *)(__ptr + 0x16)" identifier = (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) ))))) ;) (expression_statement "*(byte *)(__ptr + 0x16) = bVar1 & 0xf7;" (assignment_expression "*(byte *)(__ptr + 0x16) = bVar1 & 0xf7" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) = (binary_expression "bVar1 & 0xf7" identifier & number_literal)) ;) (if_statement "if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }" if (parenthesized_expression "(1 < __ptr[0x17])" ( (binary_expression "1 < __ptr[0x17]" number_literal < (subscript_expression "__ptr[0x17]" identifier [ number_literal ])) )) (compound_statement "{\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }" { (if_statement "if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }" if (parenthesized_expression "((bVar1 & 4) == 0)" ( (binary_expression "(bVar1 & 4) == 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }" { (expression_statement "pvVar4 = calloc(0x20,1);" (assignment_expression "pvVar4 = calloc(0x20,1)" identifier = (call_expression "calloc(0x20,1)" identifier (argument_list "(0x20,1)" ( number_literal , number_literal )))) ;) (expression_statement "__ptr[0xf] = (int)pvVar4;" (assignment_expression "__ptr[0xf] = (int)pvVar4" (subscript_expression "__ptr[0xf]" identifier [ number_literal ]) = (cast_expression "(int)pvVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (pvVar4 == (void *)0x0) goto LAB_000282d0;" if (parenthesized_expression "(pvVar4 == (void *)0x0)" ( (binary_expression "pvVar4 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000282d0;" goto statement_identifier ;)) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);" do (compound_statement "{\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        }" { (expression_statement "uVar18 = iVar19 * 8;" (assignment_expression "uVar18 = iVar19 * 8" identifier = (binary_expression "iVar19 * 8" identifier * number_literal)) ;) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);" do (compound_statement "{\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          }" { (while_statement "while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }" { (expression_statement "wVar14 = btowc(uVar18);" (assignment_expression "wVar14 = btowc(uVar18)" identifier = (call_expression "btowc(uVar18)" identifier (argument_list "(uVar18)" ( identifier )))) ;) (if_statement "if (wVar14 != 0xffffffff) break;" if (parenthesized_expression "(wVar14 != 0xffffffff)" ( (binary_expression "wVar14 != 0xffffffff" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }" if (parenthesized_expression "((uVar18 & 0xffffff80) == 0)" ( (binary_expression "(uVar18 & 0xffffff80) == 0" (parenthesized_expression "(uVar18 & 0xffffff80)" ( (binary_expression "uVar18 & 0xffffff80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }" { (labeled_statement "LAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;" statement_identifier : (expression_statement "*(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;" (assignment_expression "*(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) = (binary_expression "*(byte *)(__ptr + 0x16) | 8" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) | number_literal)) ;)) })) (labeled_statement "LAB_00028404:\n              iVar20 = iVar20 + 1;" statement_identifier : (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;)) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (if_statement "if (iVar20 == 0x20) goto LAB_00028460;" if (parenthesized_expression "(iVar20 == 0x20)" ( (binary_expression "iVar20 == 0x20" identifier == number_literal) )) (goto_statement "goto LAB_00028460;" goto statement_identifier ;)) })) (expression_statement "*(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);" (assignment_expression "*(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f)" (pointer_expression "*(uint *)(__ptr[0xf] + iVar19)" * (cast_expression "(uint *)(__ptr[0xf] + iVar19)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr[0xf] + iVar19)" ( (binary_expression "__ptr[0xf] + iVar19" (subscript_expression "__ptr[0xf]" identifier [ number_literal ]) + identifier) )))) = (binary_expression "*(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f)" (pointer_expression "*(uint *)(__ptr[0xf] + iVar19)" * (cast_expression "(uint *)(__ptr[0xf] + iVar19)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr[0xf] + iVar19)" ( (binary_expression "__ptr[0xf] + iVar19" (subscript_expression "__ptr[0xf]" identifier [ number_literal ]) + identifier) )))) | (binary_expression "1 << ((byte)iVar20 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar20 & 0x1f)" ( (binary_expression "(byte)iVar20 & 0x1f" (cast_expression "(byte)iVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (if_statement "if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;" if (parenthesized_expression "((uVar18 & 0xffffff80) != 0)" ( (binary_expression "(uVar18 & 0xffffff80) != 0" (parenthesized_expression "(uVar18 & 0xffffff80)" ( (binary_expression "uVar18 & 0xffffff80" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00028404;" goto statement_identifier ;)) (if_statement "if (wVar14 != uVar18) goto LAB_000283fc;" if (parenthesized_expression "(wVar14 != uVar18)" ( (binary_expression "wVar14 != uVar18" identifier != identifier) )) (goto_statement "goto LAB_000283fc;" goto statement_identifier ;)) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar20 != 0x20)" ( (binary_expression "iVar20 != 0x20" identifier != number_literal) )) ;) (labeled_statement "LAB_00028460:\n          iVar19 = iVar19 + 4;" statement_identifier : (expression_statement "iVar19 = iVar19 + 4;" (assignment_expression "iVar19 = iVar19 + 4" identifier = (binary_expression "iVar19 + 4" identifier + number_literal)) ;)) }) while (parenthesized_expression "(iVar19 != 0x20)" ( (binary_expression "iVar19 != 0x20" identifier != number_literal) )) ;) }) (else_clause "else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }" else (compound_statement "{\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }" { (expression_statement "__ptr[0xf] = unaff_EDI + 0x58c9;" (assignment_expression "__ptr[0xf] = unaff_EDI + 0x58c9" (subscript_expression "__ptr[0xf]" identifier [ number_literal ]) = (binary_expression "unaff_EDI + 0x58c9" identifier + number_literal)) ;) }))) })) (if_statement "if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }" if (parenthesized_expression "((*__ptr != 0) && (__ptr[8] != 0))" ( (binary_expression "(*__ptr != 0) && (__ptr[8] != 0)" (parenthesized_expression "(*__ptr != 0)" ( (binary_expression "*__ptr != 0" (pointer_expression "*__ptr" * identifier) != number_literal) )) && (parenthesized_expression "(__ptr[8] != 0)" ( (binary_expression "__ptr[8] != 0" (subscript_expression "__ptr[8]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }" { (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = piVar3[5];" (assignment_expression "iVar19 = piVar3[5]" identifier = (subscript_expression "piVar3[5]" identifier [ number_literal ])) ;) (expression_statement "ppvVar34 = &local_70;" (assignment_expression "ppvVar34 = &local_70" identifier = (pointer_expression "&local_70" & identifier)) ;) (for_statement "for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }" for ( (assignment_expression "iVar20 = 0x13" identifier = number_literal) ; (binary_expression "iVar20 != 0" identifier != number_literal) ; (assignment_expression "iVar20 = iVar20 + -1" identifier = (binary_expression "iVar20 + -1" identifier + number_literal)) ) (compound_statement "{\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }" { (expression_statement "*ppvVar34 = (void *)0x0;" (assignment_expression "*ppvVar34 = (void *)0x0" (pointer_expression "*ppvVar34" * identifier) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;" (assignment_expression "ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1" identifier = (binary_expression "ppvVar34 + (uint)bVar37 * -2 + 1" (binary_expression "ppvVar34 + (uint)bVar37 * -2" identifier + (binary_expression "(uint)bVar37 * -2" (cast_expression "(uint)bVar37" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "uVar18 = param_1 & 0x400000;" (assignment_expression "uVar18 = param_1 & 0x400000" identifier = (binary_expression "param_1 & 0x400000" identifier & number_literal)) ;) (expression_statement "local_2c = uVar18 != 0;" (assignment_expression "local_2c = uVar18 != 0" identifier = (binary_expression "uVar18 != 0" identifier != number_literal)) ;) (expression_statement "local_29 = iVar19 != 0 || uVar18 != 0;" (assignment_expression "local_29 = iVar19 != 0 || uVar18 != 0" identifier = (binary_expression "iVar19 != 0 || uVar18 != 0" (binary_expression "iVar19 != 0" identifier != number_literal) || (binary_expression "uVar18 != 0" identifier != number_literal))) ;) (expression_statement "iVar20 = __ptr[0x17];" (assignment_expression "iVar20 = __ptr[0x17]" identifier = (subscript_expression "__ptr[0x17]" identifier [ number_literal ])) ;) (expression_statement "local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;" (assignment_expression "local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1" identifier = (binary_expression "*(byte *)(__ptr + 0x16) >> 3 & 1" (binary_expression "*(byte *)(__ptr + 0x16) >> 3" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) >> number_literal) & number_literal)) ;) (expression_statement "local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;" (assignment_expression "local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1" identifier = (binary_expression "*(byte *)(__ptr + 0x16) >> 2 & 1" (binary_expression "*(byte *)(__ptr + 0x16) >> 2" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) >> number_literal) & number_literal)) ;) (expression_statement "local_74 = pvVar9;" (assignment_expression "local_74 = pvVar9" identifier = identifier) ;) (expression_statement "local_44 = extraout_ECX;" (assignment_expression "local_44 = extraout_ECX" identifier = identifier) ;) (expression_statement "local_34 = iVar19;" (assignment_expression "local_34 = iVar19" identifier = identifier) ;) (expression_statement "local_24 = iVar20;" (assignment_expression "local_24 = iVar20" identifier = identifier) ;) (if_statement "if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }" if (parenthesized_expression "(extraout_ECX != 0)" ( (binary_expression "extraout_ECX != 0" identifier != number_literal) )) (compound_statement "{\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }" { (expression_statement "iVar7 = FUN_00018140(&local_74,iVar7);" (assignment_expression "iVar7 = FUN_00018140(&local_74,iVar7)" identifier = (call_expression "FUN_00018140(&local_74,iVar7)" identifier (argument_list "(&local_74,iVar7)" ( (pointer_expression "&local_74" & identifier) , identifier )))) ;) (if_statement "if (iVar7 != 0) goto LAB_00028335;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00028335;" goto statement_identifier ;)) (expression_statement "iVar20 = __ptr[0x17];" (assignment_expression "iVar20 = __ptr[0x17]" identifier = (subscript_expression "__ptr[0x17]" identifier [ number_literal ])) ;) })) (if_statement "if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }" if (parenthesized_expression "(local_29 != '\0')" ( (binary_expression "local_29 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pvVar9 = local_70;\n      }" { (expression_statement "pvVar9 = local_70;" (assignment_expression "pvVar9 = local_70" identifier = identifier) ;) })) (expression_statement "local_70 = pvVar9;" (assignment_expression "local_70 = pvVar9" identifier = identifier) ;) (if_statement "if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }" { (if_statement "if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }" if (parenthesized_expression "(iVar20 < 2)" ( (binary_expression "iVar20 < 2" identifier < number_literal) )) (compound_statement "{\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }" { (expression_statement "uVar31 = local_50;" (assignment_expression "uVar31 = local_50" identifier = identifier) ;) (expression_statement "local_54 = local_50;" (assignment_expression "local_54 = local_50" identifier = identifier) ;) (if_statement "if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }" { (if_statement "if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }" if (parenthesized_expression "((int)local_44 <= (int)local_50)" ( (binary_expression "(int)local_44 <= (int)local_50" (cast_expression "(int)local_44" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              local_50 = local_44;\n            }" { (expression_statement "local_50 = local_44;" (assignment_expression "local_50 = local_44" identifier = identifier) ;) })) (expression_statement "uVar31 = local_58;" (assignment_expression "uVar31 = local_58" identifier = identifier) ;) (expression_statement "local_54 = local_58;" (assignment_expression "local_54 = local_58" identifier = identifier) ;) (if_statement "if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }" if (parenthesized_expression "((int)local_58 < (int)local_50)" ( (binary_expression "(int)local_58 < (int)local_50" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }" { (expression_statement "*(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));" (assignment_expression "*(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" (pointer_expression "*(undefined1 *)((int)pvVar9 + local_58)" * (cast_expression "(undefined1 *)((int)pvVar9 + local_58)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar9 + local_58)" ( (binary_expression "(int)pvVar9 + local_58" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (pointer_expression "*(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" * (cast_expression "(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" ( (binary_expression "local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58)" identifier + (binary_expression "(uint)*(byte *)((int)local_74 + local_5c + local_58)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)local_74 + local_5c + local_58)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_74 + local_5c + local_58)" ( (binary_expression "(int)local_74 + local_5c + local_58" (binary_expression "(int)local_74 + local_5c" (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier) ))))) ))))) ;) (expression_statement "local_58 = local_58 + 1;" (assignment_expression "local_58 = local_58 + 1" identifier = (binary_expression "local_58 + 1" identifier + number_literal)) ;) (expression_statement "uVar31 = local_50;" (assignment_expression "uVar31 = local_50" identifier = identifier) ;) (expression_statement "local_54 = local_50;" (assignment_expression "local_54 = local_50" identifier = identifier) ;) (if_statement "if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }" if (parenthesized_expression "((int)local_58 < (int)local_50)" ( (binary_expression "(int)local_58 < (int)local_50" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }" { (do_statement "do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);" do (compound_statement "{\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                }" { (expression_statement "*(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));" (assignment_expression "*(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" (pointer_expression "*(undefined1 *)((int)pvVar9 + local_58)" * (cast_expression "(undefined1 *)((int)pvVar9 + local_58)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar9 + local_58)" ( (binary_expression "(int)pvVar9 + local_58" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (pointer_expression "*(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" * (cast_expression "(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" ( (binary_expression "local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58)" identifier + (binary_expression "(uint)*(byte *)((int)local_74 + local_5c + local_58)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)local_74 + local_5c + local_58)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_74 + local_5c + local_58)" ( (binary_expression "(int)local_74 + local_5c + local_58" (binary_expression "(int)local_74 + local_5c" (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier) ))))) ))))) ;) (expression_statement "local_58 = local_58 + 1;" (assignment_expression "local_58 = local_58 + 1" identifier = (binary_expression "local_58 + 1" identifier + number_literal)) ;) (expression_statement "uVar31 = local_50;" (assignment_expression "uVar31 = local_50" identifier = identifier) ;) }) while (parenthesized_expression "(local_50 != local_58)" ( (binary_expression "local_50 != local_58" identifier != identifier) )) ;) })) })) })) }) (else_clause "else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }" else (compound_statement "{\n          FUN_00018420();\n          uVar31 = local_58;\n        }" { (expression_statement "FUN_00018420();" (call_expression "FUN_00018420()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar31 = local_58;" (assignment_expression "uVar31 = local_58" identifier = identifier) ;) }))) }) (else_clause "else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }" else (compound_statement "{\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }" { (if_statement "if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }" if (parenthesized_expression "(1 < iVar20)" ( (binary_expression "1 < iVar20" number_literal < identifier) )) (compound_statement "{\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }" { (do_statement "do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);" do (compound_statement "{\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          }" { (expression_statement "iVar7 = FUN_00018640(&local_74);" (assignment_expression "iVar7 = FUN_00018640(&local_74)" identifier = (call_expression "FUN_00018640(&local_74)" identifier (argument_list "(&local_74)" ( (pointer_expression "&local_74" & identifier) )))) ;) (if_statement "if (iVar7 != 0) goto LAB_00028335;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00028335;" goto statement_identifier ;)) (expression_statement "uVar31 = local_58;" (assignment_expression "uVar31 = local_58" identifier = identifier) ;) (if_statement "if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;" if (parenthesized_expression "(((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50))" ( (binary_expression "((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)" (parenthesized_expression "((int)extraout_ECX <= (int)local_54)" ( (binary_expression "(int)extraout_ECX <= (int)local_54" (cast_expression "(int)extraout_ECX" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) )) || (parenthesized_expression "((int)(__ptr[0x17] + local_58) < (int)local_50)" ( (binary_expression "(int)(__ptr[0x17] + local_58) < (int)local_50" (cast_expression "(int)(__ptr[0x17] + local_58)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(__ptr[0x17] + local_58)" ( (binary_expression "__ptr[0x17] + local_58" (subscript_expression "__ptr[0x17]" identifier [ number_literal ]) + identifier) ))) < (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (goto_statement "goto LAB_00027d86;" goto statement_identifier ;)) (expression_statement "iVar7 = FUN_00018140(&local_74,local_50 * 2);" (assignment_expression "iVar7 = FUN_00018140(&local_74,local_50 * 2)" identifier = (call_expression "FUN_00018140(&local_74,local_50 * 2)" identifier (argument_list "(&local_74,local_50 * 2)" ( (pointer_expression "&local_74" & identifier) , (binary_expression "local_50 * 2" identifier * number_literal) )))) ;) }) while (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) ;) (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (expression_statement "local_88 = iVar7;" (assignment_expression "local_88 = iVar7" identifier = identifier) ;) (goto_statement "goto LAB_00027c60;" goto statement_identifier ;) })) (expression_statement "local_b0 = (int *)local_44;" (assignment_expression "local_b0 = (int *)local_44" identifier = (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }" if (parenthesized_expression "((int)local_50 <= (int)local_44)" ( (binary_expression "(int)local_50 <= (int)local_44" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)local_44" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          local_b0 = (int *)local_50;\n        }" { (expression_statement "local_b0 = (int *)local_50;" (assignment_expression "local_b0 = (int *)local_50" identifier = (cast_expression "(int *)local_50" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (if_statement "if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }" if (parenthesized_expression "((int)local_58 < (int)local_b0)" ( (binary_expression "(int)local_58 < (int)local_b0" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }" { (expression_statement "pp_Var15 = __ctype_toupper_loc();" (assignment_expression "pp_Var15 = __ctype_toupper_loc()" identifier = (call_expression "__ctype_toupper_loc()" identifier (argument_list "()" ( )))) ;) (while_statement "while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }" { (expression_statement "uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);" (assignment_expression "uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58)" identifier = (binary_expression "(uint)*(byte *)((int)local_74 + local_5c + local_58)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)local_74 + local_5c + local_58)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_74 + local_5c + local_58)" ( (binary_expression "(int)local_74 + local_5c + local_58" (binary_expression "(int)local_74 + local_5c" (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier) ))))) ;) (if_statement "if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }" if (parenthesized_expression "(local_34 == 0)" ( (binary_expression "local_34 == 0" identifier == number_literal) )) (compound_statement "{\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }" { (expression_statement "*(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];" (assignment_expression "*(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31]" (pointer_expression "*(char *)((int)pvVar9 + local_58)" * (cast_expression "(char *)((int)pvVar9 + local_58)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar9 + local_58)" ( (binary_expression "(int)pvVar9 + local_58" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (cast_expression "(char)(*pp_Var15)[uVar31]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(*pp_Var15)[uVar31]" (parenthesized_expression "(*pp_Var15)" ( (pointer_expression "*pp_Var15" * identifier) )) [ identifier ]))) ;) }) (else_clause "else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }" else (compound_statement "{\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }" { (expression_statement "*(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];" (assignment_expression "*(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)]" (pointer_expression "*(char *)((int)pvVar9 + local_58)" * (cast_expression "(char *)((int)pvVar9 + local_58)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar9 + local_58)" ( (binary_expression "(int)pvVar9 + local_58" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (cast_expression "(char)(*pp_Var15)[*(byte *)(local_34 + uVar31)]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(*pp_Var15)[*(byte *)(local_34 + uVar31)]" (parenthesized_expression "(*pp_Var15)" ( (pointer_expression "*pp_Var15" * identifier) )) [ (pointer_expression "*(byte *)(local_34 + uVar31)" * (cast_expression "(byte *)(local_34 + uVar31)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 + uVar31)" ( (binary_expression "local_34 + uVar31" identifier + identifier) )))) ]))) ;) }))) (if_statement "if (local_b0 == (int *)(local_58 + 1)) break;" if (parenthesized_expression "(local_b0 == (int *)(local_58 + 1))" ( (binary_expression "local_b0 == (int *)(local_58 + 1)" identifier == (cast_expression "(int *)(local_58 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + 1)" ( (binary_expression "local_58 + 1" identifier + number_literal) )))) )) (break_statement "break;" break ;)) (expression_statement "local_58 = local_58 + 1;" (assignment_expression "local_58 = local_58 + 1" identifier = (binary_expression "local_58 + 1" identifier + number_literal)) ;) (expression_statement "pvVar9 = local_70;" (assignment_expression "pvVar9 = local_70" identifier = identifier) ;) })) }) (else_clause "else {\n          local_b0 = (int *)local_58;\n        }" else (compound_statement "{\n          local_b0 = (int *)local_58;\n        }" { (expression_statement "local_b0 = (int *)local_58;" (assignment_expression "local_b0 = (int *)local_58" identifier = (cast_expression "(int *)local_58" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) (expression_statement "local_54 = (uint)local_b0;" (assignment_expression "local_54 = (uint)local_b0" identifier = (cast_expression "(uint)local_b0" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar31 = local_54;" (assignment_expression "uVar31 = local_54" identifier = identifier) ;) }))) (labeled_statement "LAB_00027d86:\n      local_58 = uVar31;" statement_identifier : (expression_statement "local_58 = uVar31;" (assignment_expression "local_58 = uVar31" identifier = identifier) ;)) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = *piVar3;" (assignment_expression "iVar7 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "piVar3[6] = 0;" (assignment_expression "piVar3[6] = 0" (subscript_expression "piVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(uint *)(iVar7 + 0x80) = param_1;" (assignment_expression "*(uint *)(iVar7 + 0x80) = param_1" (pointer_expression "*(uint *)(iVar7 + 0x80)" * (cast_expression "(uint *)(iVar7 + 0x80)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x80)" ( (binary_expression "iVar7 + 0x80" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar19 = FUN_0001afc0();" (assignment_expression "iVar19 = FUN_0001afc0()" identifier = (call_expression "FUN_0001afc0()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_4c = local_4c + iVar19;" (assignment_expression "local_4c = local_4c + iVar19" identifier = (binary_expression "local_4c + iVar19" identifier + identifier)) ;) (expression_statement "puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);" (assignment_expression "puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88)" identifier = (cast_expression "(undefined4 *)FUN_00026f90(param_1,0,&local_88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00026f90(param_1,0,&local_88)" identifier (argument_list "(param_1,0,&local_88)" ( identifier , number_literal , (pointer_expression "&local_88" & identifier) ))))) ;) (if_statement "if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }" if (parenthesized_expression "((local_88 != 0) && (puVar8 == (undefined4 *)0x0))" ( (binary_expression "(local_88 != 0) && (puVar8 == (undefined4 *)0x0)" (parenthesized_expression "(local_88 != 0)" ( (binary_expression "local_88 != 0" identifier != number_literal) )) && (parenthesized_expression "(puVar8 == (undefined4 *)0x0)" ( (binary_expression "puVar8 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }" { (expression_statement "__ptr[0xd] = 0;" (assignment_expression "__ptr[0xd] = 0" (subscript_expression "__ptr[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (goto_statement "goto LAB_00027c60;" goto statement_identifier ;) })) (expression_statement "iVar19 = *(int *)(iVar7 + 0x40);" (assignment_expression "iVar19 = *(int *)(iVar7 + 0x40)" identifier = (pointer_expression "*(int *)(iVar7 + 0x40)" * (cast_expression "(int *)(iVar7 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x40)" ( (binary_expression "iVar7 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }" if (parenthesized_expression "(iVar19 == 0x1f)" ( (binary_expression "iVar19 == 0x1f" identifier == number_literal) )) (compound_statement "{\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }" { (expression_statement "puVar16 = (undefined4 *)malloc(0x3e4);" (assignment_expression "puVar16 = (undefined4 *)malloc(0x3e4)" identifier = (cast_expression "(undefined4 *)malloc(0x3e4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x3e4)" identifier (argument_list "(0x3e4)" ( number_literal ))))) ;) (if_statement "if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }" if (parenthesized_expression "(puVar16 != (undefined4 *)0x0)" ( (binary_expression "puVar16 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }" { (expression_statement "iVar20 = 1;" (assignment_expression "iVar20 = 1" identifier = number_literal) ;) (expression_statement "iVar27 = 4;" (assignment_expression "iVar27 = 4" identifier = number_literal) ;) (expression_statement "iVar26 = 0x18;" (assignment_expression "iVar26 = 0x18" identifier = number_literal) ;) (expression_statement "*puVar16 = *(undefined4 *)(iVar7 + 0x38);" (assignment_expression "*puVar16 = *(undefined4 *)(iVar7 + 0x38)" (pointer_expression "*puVar16" * identifier) = (pointer_expression "*(undefined4 *)(iVar7 + 0x38)" * (cast_expression "(undefined4 *)(iVar7 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x38)" ( (binary_expression "iVar7 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 **)(iVar7 + 0x38) = puVar16;" (assignment_expression "*(undefined4 **)(iVar7 + 0x38) = puVar16" (pointer_expression "*(undefined4 **)(iVar7 + 0x38)" * (cast_expression "(undefined4 **)(iVar7 + 0x38)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x38)" ( (binary_expression "iVar7 + 0x38" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00027e0d;" goto statement_identifier ;) })) (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (if_statement "if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }" if (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }" { (expression_statement "piVar28 = (int *)0x0;" (assignment_expression "piVar28 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar35 = true;" (assignment_expression "bVar35 = true" identifier = true) ;) (goto_statement "goto LAB_00027e67;" goto statement_identifier ;) })) }) (else_clause "else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }" else (compound_statement "{\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }" { (expression_statement "puVar16 = *(undefined4 **)(iVar7 + 0x38);" (assignment_expression "puVar16 = *(undefined4 **)(iVar7 + 0x38)" identifier = (pointer_expression "*(undefined4 **)(iVar7 + 0x38)" * (cast_expression "(undefined4 **)(iVar7 + 0x38)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x38)" ( (binary_expression "iVar7 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "iVar20 = iVar19 + 1;" (assignment_expression "iVar20 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "iVar26 = iVar19 * 0x20 + 0x18;" (assignment_expression "iVar26 = iVar19 * 0x20 + 0x18" identifier = (binary_expression "iVar19 * 0x20 + 0x18" (binary_expression "iVar19 * 0x20" identifier * number_literal) + number_literal)) ;) (expression_statement "iVar27 = iVar19 * 0x20 + 4;" (assignment_expression "iVar27 = iVar19 * 0x20 + 4" identifier = (binary_expression "iVar19 * 0x20 + 4" (binary_expression "iVar19 * 0x20" identifier * number_literal) + number_literal)) ;) (labeled_statement "LAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;" statement_identifier : (expression_statement "*(int *)(iVar7 + 0x40) = iVar20;" (assignment_expression "*(int *)(iVar7 + 0x40) = iVar20" (pointer_expression "*(int *)(iVar7 + 0x40)" * (cast_expression "(int *)(iVar7 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x40)" ( (binary_expression "iVar7 + 0x40" identifier + number_literal) )))) = identifier) ;)) (expression_statement "puVar16[iVar19 * 8 + 1] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 1] = 0" (subscript_expression "puVar16[iVar19 * 8 + 1]" identifier [ (binary_expression "iVar19 * 8 + 1" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "puVar16[iVar19 * 8 + 2] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 2] = 0" (subscript_expression "puVar16[iVar19 * 8 + 2]" identifier [ (binary_expression "iVar19 * 8 + 2" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "puVar16[iVar19 * 8 + 3] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 3] = 0" (subscript_expression "puVar16[iVar19 * 8 + 3]" identifier [ (binary_expression "iVar19 * 8 + 3" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;" (assignment_expression "*(undefined1 *)((int)puVar16 + iVar26 + 4) = 2" (pointer_expression "*(undefined1 *)((int)puVar16 + iVar26 + 4)" * (cast_expression "(undefined1 *)((int)puVar16 + iVar26 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + iVar26 + 4)" ( (binary_expression "(int)puVar16 + iVar26 + 4" (binary_expression "(int)puVar16 + iVar26" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);" (assignment_expression "pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e)" identifier = (cast_expression "(byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + iVar19 * 0x20 + 0x1e)" ( (binary_expression "(int)puVar16 + iVar19 * 0x20 + 0x1e" (binary_expression "(int)puVar16 + iVar19 * 0x20" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar19 * 0x20" identifier * number_literal)) + number_literal) )))) ;) (expression_statement "*pbVar6 = *pbVar6 & 0xf3;" (assignment_expression "*pbVar6 = *pbVar6 & 0xf3" (pointer_expression "*pbVar6" * identifier) = (binary_expression "*pbVar6 & 0xf3" (pointer_expression "*pbVar6" * identifier) & number_literal)) ;) (expression_statement "piVar28 = (int *)(iVar27 + (int)puVar16);" (assignment_expression "piVar28 = (int *)(iVar27 + (int)puVar16)" identifier = (cast_expression "(int *)(iVar27 + (int)puVar16)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + (int)puVar16)" ( (binary_expression "iVar27 + (int)puVar16" identifier + (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "bVar35 = piVar28 == (int *)0x0;" (assignment_expression "bVar35 = piVar28 == (int *)0x0" identifier = (binary_expression "piVar28 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar16[iVar19 * 8 + 4] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 4] = 0" (subscript_expression "puVar16[iVar19 * 8 + 4]" identifier [ (binary_expression "iVar19 * 8 + 4" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (expression_statement "puVar16[iVar19 * 8 + 5] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 5] = 0" (subscript_expression "puVar16[iVar19 * 8 + 5]" identifier [ (binary_expression "iVar19 * 8 + 5" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "puVar16[iVar19 * 8 + 8] = 0xffffffff;" (assignment_expression "puVar16[iVar19 * 8 + 8] = 0xffffffff" (subscript_expression "puVar16[iVar19 * 8 + 8]" identifier [ (binary_expression "iVar19 * 8 + 8" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "piVar21 = piVar28;" (assignment_expression "piVar21 = piVar28" identifier = identifier) ;) (if_statement "if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }" if (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }" { (labeled_statement "LAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);" statement_identifier : (expression_statement "iVar19 = *(int *)(iVar7 + 0x40);" (assignment_expression "iVar19 = *(int *)(iVar7 + 0x40)" identifier = (pointer_expression "*(int *)(iVar7 + 0x40)" * (cast_expression "(int *)(iVar7 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x40)" ( (binary_expression "iVar7 + 0x40" identifier + number_literal) ))))) ;)) (if_statement "if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }" if (parenthesized_expression "(iVar19 == 0x1f)" ( (binary_expression "iVar19 == 0x1f" identifier == number_literal) )) (compound_statement "{\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }" { (expression_statement "puVar16 = (undefined4 *)malloc(0x3e4);" (assignment_expression "puVar16 = (undefined4 *)malloc(0x3e4)" identifier = (cast_expression "(undefined4 *)malloc(0x3e4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x3e4)" identifier (argument_list "(0x3e4)" ( number_literal ))))) ;) (if_statement "if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;" if (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" ( (binary_expression "puVar16 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00028d28;" goto statement_identifier ;)) (expression_statement "iVar20 = 1;" (assignment_expression "iVar20 = 1" identifier = number_literal) ;) (expression_statement "local_94 = 0x18;" (assignment_expression "local_94 = 0x18" identifier = number_literal) ;) (expression_statement "local_98 = 4;" (assignment_expression "local_98 = 4" identifier = number_literal) ;) (expression_statement "*puVar16 = *(undefined4 *)(iVar7 + 0x38);" (assignment_expression "*puVar16 = *(undefined4 *)(iVar7 + 0x38)" (pointer_expression "*puVar16" * identifier) = (pointer_expression "*(undefined4 *)(iVar7 + 0x38)" * (cast_expression "(undefined4 *)(iVar7 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x38)" ( (binary_expression "iVar7 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 **)(iVar7 + 0x38) = puVar16;" (assignment_expression "*(undefined4 **)(iVar7 + 0x38) = puVar16" (pointer_expression "*(undefined4 **)(iVar7 + 0x38)" * (cast_expression "(undefined4 **)(iVar7 + 0x38)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x38)" ( (binary_expression "iVar7 + 0x38" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }" else (compound_statement "{\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }" { (expression_statement "iVar20 = iVar19 + 1;" (assignment_expression "iVar20 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "local_98 = iVar19 * 0x20 + 4;" (assignment_expression "local_98 = iVar19 * 0x20 + 4" identifier = (binary_expression "iVar19 * 0x20 + 4" (binary_expression "iVar19 * 0x20" identifier * number_literal) + number_literal)) ;) (expression_statement "local_94 = iVar19 * 0x20 + 0x18;" (assignment_expression "local_94 = iVar19 * 0x20 + 0x18" identifier = (binary_expression "iVar19 * 0x20 + 0x18" (binary_expression "iVar19 * 0x20" identifier * number_literal) + number_literal)) ;) (expression_statement "puVar16 = *(undefined4 **)(iVar7 + 0x38);" (assignment_expression "puVar16 = *(undefined4 **)(iVar7 + 0x38)" identifier = (pointer_expression "*(undefined4 **)(iVar7 + 0x38)" * (cast_expression "(undefined4 **)(iVar7 + 0x38)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x38)" ( (binary_expression "iVar7 + 0x38" identifier + number_literal) ))))) ;) }))) (expression_statement "*(int *)(iVar7 + 0x40) = iVar20;" (assignment_expression "*(int *)(iVar7 + 0x40) = iVar20" (pointer_expression "*(int *)(iVar7 + 0x40)" * (cast_expression "(int *)(iVar7 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x40)" ( (binary_expression "iVar7 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar16[iVar19 * 8 + 1] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 1] = 0" (subscript_expression "puVar16[iVar19 * 8 + 1]" identifier [ (binary_expression "iVar19 * 8 + 1" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "piVar21 = (int *)(local_98 + (int)puVar16);" (assignment_expression "piVar21 = (int *)(local_98 + (int)puVar16)" identifier = (cast_expression "(int *)(local_98 + (int)puVar16)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_98 + (int)puVar16)" ( (binary_expression "local_98 + (int)puVar16" identifier + (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar16[iVar19 * 8 + 2] = puVar8;" (assignment_expression "puVar16[iVar19 * 8 + 2] = puVar8" (subscript_expression "puVar16[iVar19 * 8 + 2]" identifier [ (binary_expression "iVar19 * 8 + 2" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "puVar16[iVar19 * 8 + 3] = piVar28;" (assignment_expression "puVar16[iVar19 * 8 + 3] = piVar28" (subscript_expression "puVar16[iVar19 * 8 + 3]" identifier [ (binary_expression "iVar19 * 8 + 3" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "*(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;" (assignment_expression "*(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10" (pointer_expression "*(undefined1 *)((int)puVar16 + local_94 + 4)" * (cast_expression "(undefined1 *)((int)puVar16 + local_94 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + local_94 + 4)" ( (binary_expression "(int)puVar16 + local_94 + 4" (binary_expression "(int)puVar16 + local_94" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);" (assignment_expression "pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e)" identifier = (cast_expression "(byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + iVar19 * 0x20 + 0x1e)" ( (binary_expression "(int)puVar16 + iVar19 * 0x20 + 0x1e" (binary_expression "(int)puVar16 + iVar19 * 0x20" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar19 * 0x20" identifier * number_literal)) + number_literal) )))) ;) (expression_statement "*pbVar6 = *pbVar6 & 0xf3;" (assignment_expression "*pbVar6 = *pbVar6 & 0xf3" (pointer_expression "*pbVar6" * identifier) = (binary_expression "*pbVar6 & 0xf3" (pointer_expression "*pbVar6" * identifier) & number_literal)) ;) (expression_statement "puVar16[iVar19 * 8 + 4] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 4] = 0" (subscript_expression "puVar16[iVar19 * 8 + 4]" identifier [ (binary_expression "iVar19 * 8 + 4" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "puVar16[iVar19 * 8 + 5] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 5] = 0" (subscript_expression "puVar16[iVar19 * 8 + 5]" identifier [ (binary_expression "iVar19 * 8 + 5" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "puVar16[iVar19 * 8 + 8] = 0xffffffff;" (assignment_expression "puVar16[iVar19 * 8 + 8] = 0xffffffff" (subscript_expression "puVar16[iVar19 * 8 + 8]" identifier [ (binary_expression "iVar19 * 8 + 8" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);" (assignment_expression "bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0)" identifier = (cast_expression "(bool)(bVar35 | piVar21 == (int *)0x0)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar35 | piVar21 == (int *)0x0)" ( (binary_expression "bVar35 | piVar21 == (int *)0x0" identifier | (binary_expression "piVar21 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )))) ;) (expression_statement "*puVar8 = piVar21;" (assignment_expression "*puVar8 = piVar21" (pointer_expression "*puVar8" * identifier) = identifier) ;) (if_statement "if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }" if (parenthesized_expression "(piVar28 != (int *)0x0)" ( (binary_expression "piVar28 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *piVar28 = (int)piVar21;\n          }" { (expression_statement "*piVar28 = (int)piVar21;" (assignment_expression "*piVar28 = (int)piVar21" (pointer_expression "*piVar28" * identifier) = (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) })) (expression_statement "piVar28 = local_b0;" (assignment_expression "piVar28 = local_b0" identifier = identifier) ;) (if_statement "if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }" if (parenthesized_expression "(!bVar35)" ( (unary_expression "!bVar35" ! identifier) )) (compound_statement "{\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }" { (expression_statement "__ptr[0xd] = (int)piVar21;" (assignment_expression "__ptr[0xd] = (int)piVar21" (subscript_expression "__ptr[0xd]" identifier [ number_literal ]) = (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "sVar5 = local_b0[1] * 4;" (assignment_expression "sVar5 = local_b0[1] * 4" identifier = (binary_expression "local_b0[1] * 4" (subscript_expression "local_b0[1]" identifier [ number_literal ]) * number_literal)) ;) (expression_statement "__size = local_b0[1] * 0xc;" (assignment_expression "__size = local_b0[1] * 0xc" identifier = (binary_expression "local_b0[1] * 0xc" (subscript_expression "local_b0[1]" identifier [ number_literal ]) * number_literal)) ;) (expression_statement "pvVar9 = malloc(sVar5);" (assignment_expression "pvVar9 = malloc(sVar5)" identifier = (call_expression "malloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier )))) ;) (expression_statement "local_b0[3] = (int)pvVar9;" (assignment_expression "local_b0[3] = (int)pvVar9" (subscript_expression "local_b0[3]" identifier [ number_literal ]) = (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pvVar4 = malloc(sVar5);" (assignment_expression "pvVar4 = malloc(sVar5)" identifier = (call_expression "malloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier )))) ;) (expression_statement "local_b0[4] = (int)pvVar4;" (assignment_expression "local_b0[4] = (int)pvVar4" (subscript_expression "local_b0[4]" identifier [ number_literal ]) = (cast_expression "(int)pvVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pvVar10 = malloc(__size);" (assignment_expression "pvVar10 = malloc(__size)" identifier = (call_expression "malloc(__size)" identifier (argument_list "(__size)" ( identifier )))) ;) (expression_statement "local_b0[5] = (int)pvVar10;" (assignment_expression "local_b0[5] = (int)pvVar10" (subscript_expression "local_b0[5]" identifier [ number_literal ]) = (cast_expression "(int)pvVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pvVar11 = malloc(__size);" (assignment_expression "pvVar11 = malloc(__size)" identifier = (call_expression "malloc(__size)" identifier (argument_list "(__size)" ( identifier )))) ;) (expression_statement "local_b0[6] = (int)pvVar11;" (assignment_expression "local_b0[6] = (int)pvVar11" (subscript_expression "local_b0[6]" identifier [ number_literal ]) = (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }" if (parenthesized_expression "((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0))" ( (binary_expression "(((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)" (parenthesized_expression "(((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0))" ( (binary_expression "((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)" (parenthesized_expression "((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0))" ( (binary_expression "(pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)" (parenthesized_expression "(pvVar9 != (void *)0x0)" ( (binary_expression "pvVar9 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pvVar4 != (void *)0x0)" ( (binary_expression "pvVar4 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(pvVar10 != (void *)0x0)" ( (binary_expression "pvVar10 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(pvVar11 != (void *)0x0)" ( (binary_expression "pvVar11 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }" { (expression_statement "iVar7 = piVar3[6];" (assignment_expression "iVar7 = piVar3[6]" identifier = (subscript_expression "piVar3[6]" identifier [ number_literal ])) ;) (expression_statement "piVar12 = (int *)malloc(iVar7 * 4);" (assignment_expression "piVar12 = (int *)malloc(iVar7 * 4)" identifier = (cast_expression "(int *)malloc(iVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(iVar7 * 4)" identifier (argument_list "(iVar7 * 4)" ( (binary_expression "iVar7 * 4" identifier * number_literal) ))))) ;) (expression_statement "local_b0[0x21] = (int)piVar12;" (assignment_expression "local_b0[0x21] = (int)piVar12" (subscript_expression "local_b0[0x21]" identifier [ number_literal ]) = (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar21 = (int *)local_b0[0xd];" (assignment_expression "piVar21 = (int *)local_b0[0xd]" identifier = (cast_expression "(int *)local_b0[0xd]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b0[0xd]" identifier [ number_literal ]))) ;) (if_statement "if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }" if (parenthesized_expression "(piVar12 != (int *)0x0)" ( (binary_expression "piVar12 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (if_statement "if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }" { (do_statement "do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);" do (compound_statement "{\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                }" { (expression_statement "piVar12[iVar19] = iVar19;" (assignment_expression "piVar12[iVar19] = iVar19" (subscript_expression "piVar12[iVar19]" identifier [ identifier ]) = identifier) ;) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar19 != iVar7)" ( (binary_expression "iVar19 != iVar7" identifier != identifier) )) ;) })) (expression_statement "cVar17 = (char)piVar21[6];" (assignment_expression "cVar17 = (char)piVar21[6]" identifier = (cast_expression "(char)piVar21[6]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar21[6]" identifier [ number_literal ]))) ;) (expression_statement "piVar22 = (int *)piVar21[1];" (assignment_expression "piVar22 = (int *)piVar21[1]" identifier = (cast_expression "(int *)piVar21[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar21[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar25 = piVar21;" (assignment_expression "piVar25 = piVar21" identifier = identifier) ;) (labeled_statement "LAB_00028010:\n              piVar29 = piVar25;" statement_identifier : (expression_statement "piVar29 = piVar25;" (assignment_expression "piVar29 = piVar25" identifier = identifier) ;)) (expression_statement "piVar25 = piVar22;" (assignment_expression "piVar25 = piVar22" identifier = identifier) ;) (expression_statement "piVar24 = piVar25;" (assignment_expression "piVar24 = piVar25" identifier = identifier) ;) (if_statement "if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }" if (parenthesized_expression "(cVar17 == '\x04')" ( (binary_expression "cVar17 == '\x04'" identifier == (char_literal "'\x04'" ' escape_sequence ')) )) (compound_statement "{\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }" { (expression_statement "iVar19 = piVar12[piVar29[5]];" (assignment_expression "iVar19 = piVar12[piVar29[5]]" identifier = (subscript_expression "piVar12[piVar29[5]]" identifier [ (subscript_expression "piVar29[5]" identifier [ number_literal ]) ])) ;) (expression_statement "piVar29[5] = iVar19;" (assignment_expression "piVar29[5] = iVar19" (subscript_expression "piVar29[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);" (assignment_expression "local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f)" (subscript_expression "local_b0[0x14]" identifier [ number_literal ]) = (binary_expression "local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f)" (subscript_expression "local_b0[0x14]" identifier [ number_literal ]) | (binary_expression "1 << ((byte)iVar19 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar19 & 0x1f)" ( (binary_expression "(byte)iVar19 & 0x1f" (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (goto_statement "goto joined_r0x00028003;" goto statement_identifier ;) })) (if_statement "if (cVar17 != '\x11') goto joined_r0x00028003;" if (parenthesized_expression "(cVar17 != '\x11')" ( (binary_expression "cVar17 != '\x11'" identifier != (char_literal "'\x11'" ' escape_sequence ')) )) (goto_statement "goto joined_r0x00028003;" goto statement_identifier ;)) (if_statement "if (piVar25 != (int *)0x0) goto code_r0x00028148;" if (parenthesized_expression "(piVar25 != (int *)0x0)" ( (binary_expression "piVar25 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto code_r0x00028148;" goto statement_identifier ;)) (goto_statement "goto LAB_00028038;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002809c;" goto statement_identifier ;) })) (expression_statement "local_88 = 0xc;" (assignment_expression "local_88 = 0xc" identifier = number_literal) ;) (goto_statement "goto LAB_00027c60;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00028d28:\n      local_88 = 0xc;" statement_identifier : (expression_statement "local_88 = 0xc;" (assignment_expression "local_88 = 0xc" identifier = number_literal) ;)) (expression_statement "__ptr[0xd] = 0;" (assignment_expression "__ptr[0xd] = 0" (subscript_expression "__ptr[0xd]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_00027c60;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000282d0:\n  local_88 = 0xc;" statement_identifier : (expression_statement "local_88 = 0xc;" (assignment_expression "local_88 = 0xc" identifier = number_literal) ;)) (goto_statement "goto LAB_000282d8;" goto statement_identifier ;) (labeled_statement "code_r0x00028148:\n  cVar17 = (char)piVar25[6];" statement_identifier : (expression_statement "cVar17 = (char)piVar25[6];" (assignment_expression "cVar17 = (char)piVar25[6]" identifier = (cast_expression "(char)piVar25[6]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar25[6]" identifier [ number_literal ]))) ;)) (expression_statement "piVar24 = (int *)piVar25[1];" (assignment_expression "piVar24 = (int *)piVar25[1]" identifier = (cast_expression "(int *)piVar25[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar25[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar22 = piVar24;" (assignment_expression "piVar22 = piVar24" identifier = identifier) ;) (if_statement "if (cVar17 == '\x11') {\n    iVar19 = piVar25[5];\n    piVar29[1] = (int)piVar24;\n    if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }\n    piVar12[iVar19] = piVar12[piVar29[5]];\n    if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }\njoined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar17 = (char)piVar24[6];\n    piVar22 = (int *)piVar24[1];\n    piVar25 = piVar24;\n  }" if (parenthesized_expression "(cVar17 == '\x11')" ( (binary_expression "cVar17 == '\x11'" identifier == (char_literal "'\x11'" ' escape_sequence ')) )) (compound_statement "{\n    iVar19 = piVar25[5];\n    piVar29[1] = (int)piVar24;\n    if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }\n    piVar12[iVar19] = piVar12[piVar29[5]];\n    if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }\njoined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar17 = (char)piVar24[6];\n    piVar22 = (int *)piVar24[1];\n    piVar25 = piVar24;\n  }" { (expression_statement "iVar19 = piVar25[5];" (assignment_expression "iVar19 = piVar25[5]" identifier = (subscript_expression "piVar25[5]" identifier [ number_literal ])) ;) (expression_statement "piVar29[1] = (int)piVar24;" (assignment_expression "piVar29[1] = (int)piVar24" (subscript_expression "piVar29[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }" if (parenthesized_expression "(piVar24 != (int *)0x0)" ( (binary_expression "piVar24 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *piVar24 = (int)piVar29;\n    }" { (expression_statement "*piVar24 = (int)piVar29;" (assignment_expression "*piVar24 = (int)piVar29" (pointer_expression "*piVar24" * identifier) = (cast_expression "(int)piVar29" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "piVar12[iVar19] = piVar12[piVar29[5]];" (assignment_expression "piVar12[iVar19] = piVar12[piVar29[5]]" (subscript_expression "piVar12[iVar19]" identifier [ identifier ]) = (subscript_expression "piVar12[piVar29[5]]" identifier [ (subscript_expression "piVar29[5]" identifier [ number_literal ]) ])) ;) (if_statement "if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }" if (parenthesized_expression "(iVar19 < 0x20)" ( (binary_expression "iVar19 < 0x20" identifier < number_literal) )) (compound_statement "{\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }" { (expression_statement "local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));" (assignment_expression "local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f))" (subscript_expression "local_b0[0x14]" identifier [ number_literal ]) = (binary_expression "local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f))" (subscript_expression "local_b0[0x14]" identifier [ number_literal ]) & (unary_expression "~(1 << ((byte)iVar19 & 0x1f))" ~ (parenthesized_expression "(1 << ((byte)iVar19 & 0x1f))" ( (binary_expression "1 << ((byte)iVar19 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar19 & 0x1f)" ( (binary_expression "(byte)iVar19 & 0x1f" (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) })) (labeled_statement "joined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }" statement_identifier : (if_statement "if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }" if (parenthesized_expression "(piVar24 == (int *)0x0)" ( (binary_expression "piVar24 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }" { (labeled_statement "LAB_00028038:\n      piVar22 = (int *)0x0;" statement_identifier : (expression_statement "piVar22 = (int *)0x0;" (assignment_expression "piVar22 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (while_statement "while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }" while (parenthesized_expression "((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0)))" ( (parenthesized_expression "(piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))" ( (comma_expression "piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0)" (assignment_expression "piVar24 = (int *)piVar29[2]" identifier = (cast_expression "(int *)piVar29[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar29[2]" identifier [ number_literal ]))) , (binary_expression "piVar24 == piVar22 || (piVar24 == (int *)0x0)" (binary_expression "piVar24 == piVar22" identifier == identifier) || (parenthesized_expression "(piVar24 == (int *)0x0)" ( (binary_expression "piVar24 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )))) )) )) (compound_statement "{\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }" { (expression_statement "piVar25 = (int *)*piVar29;" (assignment_expression "piVar25 = (int *)*piVar29" identifier = (cast_expression "(int *)*piVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar29" * identifier))) ;) (expression_statement "piVar22 = piVar29;" (assignment_expression "piVar22 = piVar29" identifier = identifier) ;) (expression_statement "piVar29 = piVar25;" (assignment_expression "piVar29 = piVar25" identifier = identifier) ;) (if_statement "if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }" if (parenthesized_expression "(piVar25 == (int *)0x0)" ( (binary_expression "piVar25 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }" { (if_statement "if (iVar7 == 0) goto LAB_00028074;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00028074;" goto statement_identifier ;)) (expression_statement "iVar19 = *piVar12;" (assignment_expression "iVar19 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (if_statement "if (iVar19 == 0) goto LAB_0002806d;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002806d;" goto statement_identifier ;)) (goto_statement "goto LAB_0002809c;" goto statement_identifier ;) })) })) }))) (expression_statement "cVar17 = (char)piVar24[6];" (assignment_expression "cVar17 = (char)piVar24[6]" identifier = (cast_expression "(char)piVar24[6]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar24[6]" identifier [ number_literal ]))) ;) (expression_statement "piVar22 = (int *)piVar24[1];" (assignment_expression "piVar22 = (int *)piVar24[1]" identifier = (cast_expression "(int *)piVar24[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar24[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar25 = piVar24;" (assignment_expression "piVar25 = piVar24" identifier = identifier) ;) })) (goto_statement "goto LAB_00028010;" goto statement_identifier ;) (while_statement "while (piVar12[iVar19] == iVar19) {\nLAB_0002806d:\n    iVar19 = iVar19 + 1;\n    if (iVar19 == iVar7) goto LAB_00028074;\n  }" while (parenthesized_expression "(piVar12[iVar19] == iVar19)" ( (binary_expression "piVar12[iVar19] == iVar19" (subscript_expression "piVar12[iVar19]" identifier [ identifier ]) == identifier) )) (compound_statement "{\nLAB_0002806d:\n    iVar19 = iVar19 + 1;\n    if (iVar19 == iVar7) goto LAB_00028074;\n  }" { (labeled_statement "LAB_0002806d:\n    iVar19 = iVar19 + 1;" statement_identifier : (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;)) (if_statement "if (iVar19 == iVar7) goto LAB_00028074;" if (parenthesized_expression "(iVar19 == iVar7)" ( (binary_expression "iVar19 == iVar7" identifier == identifier) )) (goto_statement "goto LAB_00028074;" goto statement_identifier ;)) })) (labeled_statement "LAB_0002809c:\n  do {\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  } while (piVar21 != (int *)0x0);" statement_identifier : (do_statement "do {\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  } while (piVar21 != (int *)0x0);" do (compound_statement "{\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  }" { (expression_statement "piVar22 = (int *)piVar21[1];" (assignment_expression "piVar22 = (int *)piVar21[1]" identifier = (cast_expression "(int *)piVar21[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar21[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar12 = piVar21;" (assignment_expression "piVar12 = piVar21" identifier = identifier) ;) (while_statement "while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }" while (parenthesized_expression "(piVar21 = piVar22, piVar21 != (int *)0x0)" ( (comma_expression "piVar21 = piVar22, piVar21 != (int *)0x0" (assignment_expression "piVar21 = piVar22" identifier = identifier) , (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }" { (expression_statement "piVar12 = piVar21;" (assignment_expression "piVar12 = piVar21" identifier = identifier) ;) (expression_statement "piVar22 = (int *)piVar21[1];" (assignment_expression "piVar22 = (int *)piVar21[1]" identifier = (cast_expression "(int *)piVar21[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar21[1]" identifier [ number_literal ]))) ;) })) (expression_statement "piVar21 = (int *)piVar12[2];" (assignment_expression "piVar21 = (int *)piVar12[2]" identifier = (cast_expression "(int *)piVar12[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[2]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(piVar21 != (int *)0x0)" ( (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "piVar21 = (int *)0x0;" (assignment_expression "piVar21 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    local_80 = 0;\n    if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }\n    piVar22 = (int *)*piVar12;\n    if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }\n    piVar21 = (int *)piVar22[2];\n    if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;\n    iVar7 = piVar22[1];\n    piVar12 = piVar22;\n  } while( true );" do (compound_statement "{\n    local_80 = 0;\n    if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }\n    piVar22 = (int *)*piVar12;\n    if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }\n    piVar21 = (int *)piVar22[2];\n    if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;\n    iVar7 = piVar22[1];\n    piVar12 = piVar22;\n  }" { (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (if_statement "if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }" if (parenthesized_expression "((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11'))" ( (binary_expression "(iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')" (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(char *)(iVar7 + 0x18) != '\x11')" ( (binary_expression "*(char *)(iVar7 + 0x18) != '\x11'" (pointer_expression "*(char *)(iVar7 + 0x18)" * (cast_expression "(char *)(iVar7 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x18)" ( (binary_expression "iVar7 + 0x18" identifier + number_literal) )))) != (char_literal "'\x11'" ' escape_sequence ')) ))) )) (compound_statement "{\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }" { (if_statement "if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }" if (parenthesized_expression "(piVar21 != (int *)0x0)" ( (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }" { (expression_statement "cVar17 = (char)piVar21[6];" (assignment_expression "cVar17 = (char)piVar21[6]" identifier = (cast_expression "(char)piVar21[6]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar21[6]" identifier [ number_literal ]))) ;) (goto_statement "goto joined_r0x000280c8;" goto statement_identifier ;) })) }) (else_clause "else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }" else (compound_statement "{\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }" { (expression_statement "puVar8 = (undefined4 *)FUN_00020ab0();" (assignment_expression "puVar8 = (undefined4 *)FUN_00020ab0()" identifier = (cast_expression "(undefined4 *)FUN_00020ab0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00020ab0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar12[1] = (int)puVar8;" (assignment_expression "piVar12[1] = (int)puVar8" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }" if (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar8 = piVar12;\n      }" { (expression_statement "*puVar8 = piVar12;" (assignment_expression "*puVar8 = piVar12" (pointer_expression "*puVar8" * identifier) = identifier) ;) })) (if_statement "if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }" if (parenthesized_expression "(piVar12[2] != 0)" ( (binary_expression "piVar12[2] != 0" (subscript_expression "piVar12[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }" { (expression_statement "cVar17 = *(char *)(piVar12[2] + 0x18);" (assignment_expression "cVar17 = *(char *)(piVar12[2] + 0x18)" identifier = (pointer_expression "*(char *)(piVar12[2] + 0x18)" * (cast_expression "(char *)(piVar12[2] + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12[2] + 0x18)" ( (binary_expression "piVar12[2] + 0x18" (subscript_expression "piVar12[2]" identifier [ number_literal ]) + number_literal) ))))) ;) (labeled_statement "joined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }" statement_identifier : (if_statement "if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }" if (parenthesized_expression "(cVar17 == '\x11')" ( (binary_expression "cVar17 == '\x11'" identifier == (char_literal "'\x11'" ' escape_sequence ')) )) (compound_statement "{\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }" { (expression_statement "puVar8 = (undefined4 *)FUN_00020ab0();" (assignment_expression "puVar8 = (undefined4 *)FUN_00020ab0()" identifier = (cast_expression "(undefined4 *)FUN_00020ab0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00020ab0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar12[2] = (int)puVar8;" (assignment_expression "piVar12[2] = (int)puVar8" (subscript_expression "piVar12[2]" identifier [ number_literal ]) = (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }" if (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *puVar8 = piVar12;\n          }" { (expression_statement "*puVar8 = piVar12;" (assignment_expression "*puVar8 = piVar12" (pointer_expression "*puVar8" * identifier) = identifier) ;) })) }))) })) (expression_statement "iVar7 = local_80;" (assignment_expression "iVar7 = local_80" identifier = identifier) ;) (if_statement "if (local_80 != 0) goto LAB_00028335;" if (parenthesized_expression "(local_80 != 0)" ( (binary_expression "local_80 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00028335;" goto statement_identifier ;)) }))) (expression_statement "piVar22 = (int *)*piVar12;" (assignment_expression "piVar22 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ;) (if_statement "if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }" if (parenthesized_expression "(piVar22 == (int *)0x0)" ( (binary_expression "piVar22 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }" { (expression_statement "puVar8 = (undefined4 *)local_b0[0xd];" (assignment_expression "puVar8 = (undefined4 *)local_b0[0xd]" identifier = (cast_expression "(undefined4 *)local_b0[0xd]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b0[0xd]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_000281a0;" goto statement_identifier ;) })) (expression_statement "piVar21 = (int *)piVar22[2];" (assignment_expression "piVar21 = (int *)piVar22[2]" identifier = (cast_expression "(int *)piVar22[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar22[2]" identifier [ number_literal ]))) ;) (if_statement "if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;" if (parenthesized_expression "((piVar21 != (int *)0x0) && (piVar12 != piVar21))" ( (binary_expression "(piVar21 != (int *)0x0) && (piVar12 != piVar21)" (parenthesized_expression "(piVar21 != (int *)0x0)" ( (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(piVar12 != piVar21)" ( (binary_expression "piVar12 != piVar21" identifier != identifier) ))) )) (goto_statement "goto LAB_0002809c;" goto statement_identifier ;)) (expression_statement "iVar7 = piVar22[1];" (assignment_expression "iVar7 = piVar22[1]" identifier = (subscript_expression "piVar22[1]" identifier [ number_literal ])) ;) (expression_statement "piVar12 = piVar22;" (assignment_expression "piVar12 = piVar22" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "LAB_00028074:\n  free(piVar12);" statement_identifier : (expression_statement "free(piVar12);" (call_expression "free(piVar12)" identifier (argument_list "(piVar12)" ( identifier ))) ;)) (expression_statement "local_b0[0x21] = 0;" (assignment_expression "local_b0[0x21] = 0" (subscript_expression "local_b0[0x21]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar21 = (int *)local_b0[0xd];" (assignment_expression "piVar21 = (int *)local_b0[0xd]" identifier = (cast_expression "(int *)local_b0[0xd]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b0[0xd]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_0002809c;" goto statement_identifier ;) (labeled_statement "LAB_000281a0:\n  do {\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  } while ((undefined4 *)puVar16[2] != (undefined4 *)0x0);" statement_identifier : (do_statement "do {\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  } while ((undefined4 *)puVar16[2] != (undefined4 *)0x0);" do (compound_statement "{\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  }" { (do_statement "do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);" do (compound_statement "{\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    }" { (expression_statement "puVar16 = puVar8;" (assignment_expression "puVar16 = puVar8" identifier = identifier) ;) (expression_statement "puVar8 = (undefined4 *)puVar16[1];" (assignment_expression "puVar8 = (undefined4 *)puVar16[1]" identifier = (cast_expression "(undefined4 *)puVar16[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[1]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "((undefined4 *)puVar16[1] != (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)puVar16[1] != (undefined4 *)0x0" (cast_expression "(undefined4 *)puVar16[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[1]" identifier [ number_literal ])) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar8 = (undefined4 *)puVar16[2];" (assignment_expression "puVar8 = (undefined4 *)puVar16[2]" identifier = (cast_expression "(undefined4 *)puVar16[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[2]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "((undefined4 *)puVar16[2] != (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)puVar16[2] != (undefined4 *)0x0" (cast_expression "(undefined4 *)puVar16[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[2]" identifier [ number_literal ])) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (do_statement "do {\n    if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    puVar8 = (undefined4 *)puVar13[2];\n    bVar35 = puVar16 == puVar8;\n    puVar16 = puVar13;\n  } while (puVar8 == (undefined4 *)0x0 || bVar35);" do (compound_statement "{\n    if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    puVar8 = (undefined4 *)puVar13[2];\n    bVar35 = puVar16 == puVar8;\n    puVar16 = puVar13;\n  }" { (if_statement "if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }" if (parenthesized_expression "(*(char *)(puVar16 + 6) == '\x10')" ( (binary_expression "*(char *)(puVar16 + 6) == '\x10'" (pointer_expression "*(char *)(puVar16 + 6)" * (cast_expression "(char *)(puVar16 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 6)" ( (binary_expression "puVar16 + 6" identifier + number_literal) )))) == (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }" { (expression_statement "uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);" (assignment_expression "uVar2 = *(undefined4 *)(puVar16[1] + 0x1c)" identifier = (pointer_expression "*(undefined4 *)(puVar16[1] + 0x1c)" * (cast_expression "(undefined4 *)(puVar16[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16[1] + 0x1c)" ( (binary_expression "puVar16[1] + 0x1c" (subscript_expression "puVar16[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);" (assignment_expression "puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc)" (subscript_expression "puVar16[3]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(puVar16[1] + 0xc)" * (cast_expression "(undefined4 *)(puVar16[1] + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16[1] + 0xc)" ( (binary_expression "puVar16[1] + 0xc" (subscript_expression "puVar16[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "puVar16[7] = uVar2;" (assignment_expression "puVar16[7] = uVar2" (subscript_expression "puVar16[7]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "LAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;" statement_identifier : (expression_statement "puVar13 = (undefined4 *)*puVar16;" (assignment_expression "puVar13 = (undefined4 *)*puVar16" identifier = (cast_expression "(undefined4 *)*puVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;)) }) (else_clause "else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }" else (compound_statement "{\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }" { (expression_statement "puVar16[3] = puVar16;" (assignment_expression "puVar16[3] = puVar16" (subscript_expression "puVar16[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = FUN_00018d20();" (assignment_expression "iVar7 = FUN_00018d20()" identifier = (call_expression "FUN_00018d20()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar16[7] = iVar7;" (assignment_expression "puVar16[7] = iVar7" (subscript_expression "puVar16[7]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar7 == -1) goto LAB_00028330;" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (goto_statement "goto LAB_00028330;" goto statement_identifier ;)) (if_statement "if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;" if (parenthesized_expression "(*(char *)(puVar16 + 6) != '\f')" ( (binary_expression "*(char *)(puVar16 + 6) != '\f'" (pointer_expression "*(char *)(puVar16 + 6)" * (cast_expression "(char *)(puVar16 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 6)" ( (binary_expression "puVar16 + 6" identifier + number_literal) )))) != (char_literal "'\f'" ' escape_sequence ')) )) (goto_statement "goto LAB_000281c7;" goto statement_identifier ;)) (expression_statement "*(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;" (assignment_expression "*(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8" (pointer_expression "*(uint *)(*local_b0 + 4 + iVar7 * 8)" * (cast_expression "(uint *)(*local_b0 + 4 + iVar7 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_b0 + 4 + iVar7 * 8)" ( (binary_expression "*local_b0 + 4 + iVar7 * 8" (binary_expression "*local_b0 + 4" (pointer_expression "*local_b0" * identifier) + number_literal) + (binary_expression "iVar7 * 8" identifier * number_literal)) )))) = (binary_expression "*(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8" (binary_expression "*(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff" (pointer_expression "*(uint *)(*local_b0 + 4 + iVar7 * 8)" * (cast_expression "(uint *)(*local_b0 + 4 + iVar7 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_b0 + 4 + iVar7 * 8)" ( (binary_expression "*local_b0 + 4 + iVar7 * 8" (binary_expression "*local_b0 + 4" (pointer_expression "*local_b0" * identifier) + number_literal) + (binary_expression "iVar7 * 8" identifier * number_literal)) )))) & number_literal) | (binary_expression "(puVar16[5] & 0x3ff) << 8" (parenthesized_expression "(puVar16[5] & 0x3ff)" ( (binary_expression "puVar16[5] & 0x3ff" (subscript_expression "puVar16[5]" identifier [ number_literal ]) & number_literal) )) << number_literal))) ;) (expression_statement "puVar13 = (undefined4 *)*puVar16;" (assignment_expression "puVar13 = (undefined4 *)*puVar16" identifier = (cast_expression "(undefined4 *)*puVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) }))) (if_statement "if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }" if (parenthesized_expression "(puVar13 == (undefined4 *)0x0)" ( (binary_expression "puVar13 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }" { (expression_statement "puVar8 = (undefined4 *)local_b0[0xd];" (assignment_expression "puVar8 = (undefined4 *)local_b0[0xd]" identifier = (cast_expression "(undefined4 *)local_b0[0xd]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b0[0xd]" identifier [ number_literal ]))) ;) (expression_statement "cVar17 = *(char *)(puVar8 + 6);" (assignment_expression "cVar17 = *(char *)(puVar8 + 6)" identifier = (pointer_expression "*(char *)(puVar8 + 6)" * (cast_expression "(char *)(puVar8 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 6)" ( (binary_expression "puVar8 + 6" identifier + number_literal) ))))) ;) (expression_statement "puVar16 = (undefined4 *)puVar8[1];" (assignment_expression "puVar16 = (undefined4 *)puVar8[1]" identifier = (cast_expression "(undefined4 *)puVar8[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar13 = puVar8;" (assignment_expression "puVar13 = puVar8" identifier = identifier) ;) (if_statement "if (cVar17 == '\v') goto LAB_00028283;" if (parenthesized_expression "(cVar17 == '\v')" ( (binary_expression "cVar17 == '\v'" identifier == (char_literal "'\v'" ' escape_sequence ')) )) (goto_statement "goto LAB_00028283;" goto statement_identifier ;)) (goto_statement "goto LAB_00028250;" goto statement_identifier ;) })) (expression_statement "puVar8 = (undefined4 *)puVar13[2];" (assignment_expression "puVar8 = (undefined4 *)puVar13[2]" identifier = (cast_expression "(undefined4 *)puVar13[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[2]" identifier [ number_literal ]))) ;) (expression_statement "bVar35 = puVar16 == puVar8;" (assignment_expression "bVar35 = puVar16 == puVar8" identifier = (binary_expression "puVar16 == puVar8" identifier == identifier)) ;) (expression_statement "puVar16 = puVar13;" (assignment_expression "puVar16 = puVar13" identifier = identifier) ;) }) while (parenthesized_expression "(puVar8 == (undefined4 *)0x0 || bVar35)" ( (binary_expression "puVar8 == (undefined4 *)0x0 || bVar35" (binary_expression "puVar8 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || identifier) )) ;) (goto_statement "goto LAB_000281a0;" goto statement_identifier ;) (labeled_statement "LAB_00028250:\n  if (cVar17 == '\x10') {\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }\n  else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }" statement_identifier : (if_statement "if (cVar17 == '\x10') {\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }\n  else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }" if (parenthesized_expression "(cVar17 == '\x10')" ( (binary_expression "cVar17 == '\x10'" identifier == (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }" { (expression_statement "iVar7 = puVar13[2];" (assignment_expression "iVar7 = puVar13[2]" identifier = (subscript_expression "puVar13[2]" identifier [ number_literal ])) ;) (expression_statement "puVar16[4] = *(undefined4 *)(iVar7 + 0xc);" (assignment_expression "puVar16[4] = *(undefined4 *)(iVar7 + 0xc)" (subscript_expression "puVar16[4]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(iVar7 + 0xc)" * (cast_expression "(undefined4 *)(iVar7 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar7 + 0x10) = puVar13[4];" (assignment_expression "*(undefined4 *)(iVar7 + 0x10) = puVar13[4]" (pointer_expression "*(undefined4 *)(iVar7 + 0x10)" * (cast_expression "(undefined4 *)(iVar7 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) )))) = (subscript_expression "puVar13[4]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }" else (compound_statement "{\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }" { (if_statement "if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }" if (parenthesized_expression "(puVar16 != (undefined4 *)0x0)" ( (binary_expression "puVar16 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puVar16[4] = puVar13[4];\n    }" { (expression_statement "puVar16[4] = puVar13[4];" (assignment_expression "puVar16[4] = puVar13[4]" (subscript_expression "puVar16[4]" identifier [ number_literal ]) = (subscript_expression "puVar13[4]" identifier [ number_literal ])) ;) })) (expression_statement "puVar30 = (undefined4 *)puVar13[2];" (assignment_expression "puVar30 = (undefined4 *)puVar13[2]" identifier = (cast_expression "(undefined4 *)puVar13[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[2]" identifier [ number_literal ]))) ;) (if_statement "if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }" if (parenthesized_expression "(puVar30 == (undefined4 *)0x0)" ( (binary_expression "puVar30 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }" { (if_statement "if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }" if (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" ( (binary_expression "puVar16 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }" { (expression_statement "puVar16 = (undefined4 *)*puVar13;" (assignment_expression "puVar16 = (undefined4 *)*puVar13" identifier = (cast_expression "(undefined4 *)*puVar13" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar13" * identifier))) ;) (while_statement "while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }" { (expression_statement "puVar30 = puVar16;" (assignment_expression "puVar30 = puVar16" identifier = identifier) ;) (if_statement "if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;" if (parenthesized_expression "(puVar30 == (undefined4 *)0x0)" ( (binary_expression "puVar30 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00028398;" goto statement_identifier ;)) (expression_statement "puVar16 = (undefined4 *)puVar30[2];" (assignment_expression "puVar16 = (undefined4 *)puVar30[2]" identifier = (cast_expression "(undefined4 *)puVar30[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar30[2]" identifier [ number_literal ]))) ;) (if_statement "if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;" if (parenthesized_expression "((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13))" ( (binary_expression "(puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)" (parenthesized_expression "(puVar16 != (undefined4 *)0x0)" ( (binary_expression "puVar16 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(puVar16 != puVar13)" ( (binary_expression "puVar16 != puVar13" identifier != identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "puVar16 = (undefined4 *)*puVar30;" (assignment_expression "puVar16 = (undefined4 *)*puVar30" identifier = (cast_expression "(undefined4 *)*puVar30" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar30" * identifier))) ;) (expression_statement "puVar13 = puVar30;" (assignment_expression "puVar13 = puVar30" identifier = identifier) ;) })) })) }) (else_clause "else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }" else (compound_statement "{\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }" { (if_statement "if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }" if (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" ( (binary_expression "puVar16 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar16 = puVar30;\n      }" { (expression_statement "puVar16 = puVar30;" (assignment_expression "puVar16 = puVar30" identifier = identifier) ;) })) (expression_statement "puVar30[4] = puVar13[4];" (assignment_expression "puVar30[4] = puVar13[4]" (subscript_expression "puVar30[4]" identifier [ number_literal ]) = (subscript_expression "puVar13[4]" identifier [ number_literal ])) ;) }))) })))) (while_statement "while( true ) {\n    cVar17 = *(char *)(puVar16 + 6);\n    puVar30 = puVar16 + 1;\n    puVar13 = puVar16;\n    puVar16 = (undefined4 *)*puVar30;\n    if (cVar17 != '\v') break;\nLAB_00028283:\n    puVar16[4] = puVar13;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    cVar17 = *(char *)(puVar16 + 6);\n    puVar30 = puVar16 + 1;\n    puVar13 = puVar16;\n    puVar16 = (undefined4 *)*puVar30;\n    if (cVar17 != '\v') break;\nLAB_00028283:\n    puVar16[4] = puVar13;\n  }" { (expression_statement "cVar17 = *(char *)(puVar16 + 6);" (assignment_expression "cVar17 = *(char *)(puVar16 + 6)" identifier = (pointer_expression "*(char *)(puVar16 + 6)" * (cast_expression "(char *)(puVar16 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 6)" ( (binary_expression "puVar16 + 6" identifier + number_literal) ))))) ;) (expression_statement "puVar30 = puVar16 + 1;" (assignment_expression "puVar30 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = puVar16;" (assignment_expression "puVar13 = puVar16" identifier = identifier) ;) (expression_statement "puVar16 = (undefined4 *)*puVar30;" (assignment_expression "puVar16 = (undefined4 *)*puVar30" identifier = (cast_expression "(undefined4 *)*puVar30" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar30" * identifier))) ;) (if_statement "if (cVar17 != '\v') break;" if (parenthesized_expression "(cVar17 != '\v')" ( (binary_expression "cVar17 != '\v'" identifier != (char_literal "'\v'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00028283:\n    puVar16[4] = puVar13;" statement_identifier : (expression_statement "puVar16[4] = puVar13;" (assignment_expression "puVar16[4] = puVar13" (subscript_expression "puVar16[4]" identifier [ number_literal ]) = identifier) ;)) })) (goto_statement "goto LAB_00028250;" goto statement_identifier ;) (while_statement "while (puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0) {\n    while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }\n  }" while (parenthesized_expression "(puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0)" ( (comma_expression "puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0" (assignment_expression "puVar13 = (undefined4 *)*puVar30" identifier = (cast_expression "(undefined4 *)*puVar30" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar30" * identifier))) , (comma_expression "puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0" (assignment_expression "puVar16 = puVar30" identifier = identifier) , (binary_expression "(undefined4 *)*puVar30 != (undefined4 *)0x0" (cast_expression "(undefined4 *)*puVar30" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar30" * identifier)) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) )) (compound_statement "{\n    while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }\n  }" { (while_statement "while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }" { (expression_statement "puVar30 = puVar13;" (assignment_expression "puVar30 = puVar13" identifier = identifier) ;) (expression_statement "puVar8 = (undefined4 *)puVar30[2];" (assignment_expression "puVar8 = (undefined4 *)puVar30[2]" identifier = (cast_expression "(undefined4 *)puVar30[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar30[2]" identifier [ number_literal ]))) ;) (expression_statement "bVar35 = puVar8 == puVar16;" (assignment_expression "bVar35 = puVar8 == puVar16" identifier = (binary_expression "puVar8 == puVar16" identifier == identifier)) ;) (if_statement "if (bVar35 || puVar8 == (undefined4 *)0x0) break;" if (parenthesized_expression "(bVar35 || puVar8 == (undefined4 *)0x0)" ( (binary_expression "bVar35 || puVar8 == (undefined4 *)0x0" identifier || (binary_expression "puVar8 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);" statement_identifier : (do_statement "do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);" do (compound_statement "{\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      }" { (expression_statement "bVar37 = *(byte *)(puVar8 + 6);" (assignment_expression "bVar37 = *(byte *)(puVar8 + 6)" identifier = (pointer_expression "*(byte *)(puVar8 + 6)" * (cast_expression "(byte *)(puVar8 + 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 6)" ( (binary_expression "puVar8 + 6" identifier + number_literal) ))))) ;) (if_statement "if (bVar37 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }" if (parenthesized_expression "(bVar37 < 0x11)" ( (binary_expression "bVar37 < 0x11" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }" { comment comment (expression_statement "iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();" (assignment_expression "iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ()" identifier = (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))" ( (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669)" * (cast_expression "(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669)" ( (binary_expression "*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669" (binary_expression "*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x57dd + (uint)bVar37 * 4)" ( (binary_expression "unaff_EDI + 0x57dd + (uint)bVar37 * 4" (binary_expression "unaff_EDI + 0x57dd" identifier + number_literal) + (binary_expression "(uint)bVar37 * 4" (cast_expression "(uint)bVar37" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar7;" return identifier ;) })) (if_statement "if ((bVar37 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }" if (parenthesized_expression "((bVar37 & 8) != 0)" ( (binary_expression "(bVar37 & 8) != 0" (parenthesized_expression "(bVar37 & 8)" ( (binary_expression "bVar37 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }" { comment (expression_statement "__assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));" (call_expression "__assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895))" identifier (argument_list "((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895))" ( (cast_expression "(char *)(unaff_EDI + 0x5ac9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x5ac9)" ( (binary_expression "unaff_EDI + 0x5ac9" identifier + number_literal) ))) , (cast_expression "(char *)(unaff_EDI + 0x503d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x503d)" ( (binary_expression "unaff_EDI + 0x503d" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x5895)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x5895)" ( (binary_expression "unaff_EDI + 0x5895" identifier + number_literal) ))) ))) ;) })) (expression_statement "*(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);" (assignment_expression "*(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c)" (pointer_expression "*(undefined4 *)(local_b0[3] + puVar8[7] * 4)" * (cast_expression "(undefined4 *)(local_b0[3] + puVar8[7] * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0[3] + puVar8[7] * 4)" ( (binary_expression "local_b0[3] + puVar8[7] * 4" (subscript_expression "local_b0[3]" identifier [ number_literal ]) + (binary_expression "puVar8[7] * 4" (subscript_expression "puVar8[7]" identifier [ number_literal ]) * number_literal)) )))) = (pointer_expression "*(undefined4 *)(puVar8[4] + 0x1c)" * (cast_expression "(undefined4 *)(puVar8[4] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8[4] + 0x1c)" ( (binary_expression "puVar8[4] + 0x1c" (subscript_expression "puVar8[4]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "puVar16 = (undefined4 *)puVar8[1];" (assignment_expression "puVar16 = (undefined4 *)puVar8[1]" identifier = (cast_expression "(undefined4 *)puVar8[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar13 = puVar8;" (assignment_expression "puVar13 = puVar8" identifier = identifier) ;) (expression_statement "puVar8 = puVar16;" (assignment_expression "puVar8 = puVar16" identifier = identifier) ;) }) while (parenthesized_expression "(puVar16 != (undefined4 *)0x0)" ( (binary_expression "puVar16 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) })) })) (expression_statement "bVar36 = false;" (assignment_expression "bVar36 = false" identifier = false) ;) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n    if (local_b0[2] == iVar19) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }\n  } while( true );" do (compound_statement "{\n    if (local_b0[2] == iVar19) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }\n  }" { (if_statement "if (local_b0[2] == iVar19) goto LAB_000284fa;" if (parenthesized_expression "(local_b0[2] == iVar19)" ( (binary_expression "local_b0[2] == iVar19" (subscript_expression "local_b0[2]" identifier [ number_literal ]) == identifier) )) (goto_statement "goto LAB_000284fa;" goto statement_identifier ;)) (labeled_statement "LAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }" statement_identifier : (while_statement "while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }" { (expression_statement "iVar20 = iVar19 * 0xc;" (assignment_expression "iVar20 = iVar19 * 0xc" identifier = (binary_expression "iVar19 * 0xc" identifier * number_literal)) ;) (if_statement "if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;" if (parenthesized_expression "(*(int *)(local_b0[6] + 4 + iVar20) != 0)" ( (binary_expression "*(int *)(local_b0[6] + 4 + iVar20) != 0" (pointer_expression "*(int *)(local_b0[6] + 4 + iVar20)" * (cast_expression "(int *)(local_b0[6] + 4 + iVar20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0[6] + 4 + iVar20)" ( (binary_expression "local_b0[6] + 4 + iVar20" (binary_expression "local_b0[6] + 4" (subscript_expression "local_b0[6]" identifier [ number_literal ]) + number_literal) + identifier) )))) != number_literal) )) (goto_statement "goto code_r0x000284f2;" goto statement_identifier ;)) (expression_statement "iVar7 = FUN_0001fb10(1);" (assignment_expression "iVar7 = FUN_0001fb10(1)" identifier = (call_expression "FUN_0001fb10(1)" identifier (argument_list "(1)" ( number_literal )))) ;) (if_statement "if (iVar7 != 0) goto LAB_00028335;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00028335;" goto statement_identifier ;)) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (if_statement "if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;" if (parenthesized_expression "(*(int *)(local_b0[6] + 4 + iVar20) != 0)" ( (binary_expression "*(int *)(local_b0[6] + 4 + iVar20) != 0" (pointer_expression "*(int *)(local_b0[6] + 4 + iVar20)" * (cast_expression "(int *)(local_b0[6] + 4 + iVar20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0[6] + 4 + iVar20)" ( (binary_expression "local_b0[6] + 4 + iVar20" (binary_expression "local_b0[6] + 4" (subscript_expression "local_b0[6]" identifier [ number_literal ]) + number_literal) + identifier) )))) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "free(local_78);" (call_expression "free(local_78)" identifier (argument_list "(local_78)" ( identifier ))) ;) (expression_statement "bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;" (assignment_expression "bVar36 = bVar35 || puVar8 == (undefined4 *)0x0" identifier = (binary_expression "bVar35 || puVar8 == (undefined4 *)0x0" identifier || (binary_expression "puVar8 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ;) (if_statement "if (local_b0[2] == iVar19) goto LAB_00028505;" if (parenthesized_expression "(local_b0[2] == iVar19)" ( (binary_expression "local_b0[2] == iVar19" (subscript_expression "local_b0[2]" identifier [ number_literal ]) == identifier) )) (goto_statement "goto LAB_00028505;" goto statement_identifier ;)) }))) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "code_r0x000284f2:\n  iVar19 = iVar19 + 1;" statement_identifier : (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;)) (if_statement "if (local_b0[2] == iVar19) {\nLAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    iVar19 = 0;\n    bVar36 = false;\n  }" if (parenthesized_expression "(local_b0[2] == iVar19)" ( (binary_expression "local_b0[2] == iVar19" (subscript_expression "local_b0[2]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\nLAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    iVar19 = 0;\n    bVar36 = false;\n  }" { (labeled_statement "LAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }" statement_identifier : (if_statement "if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }" if (parenthesized_expression "(!bVar36)" ( (unary_expression "!bVar36" ! identifier) )) (compound_statement "{\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }" { (if_statement "if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;" if (parenthesized_expression "(((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0))" ( (binary_expression "((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)" (parenthesized_expression "((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0))" ( (binary_expression "(((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)" (parenthesized_expression "(((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0))" ( (binary_expression "((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)" (parenthesized_expression "((*(byte *)(piVar3 + 7) & 0x10) != 0)" ( (binary_expression "(*(byte *)(piVar3 + 7) & 0x10) != 0" (parenthesized_expression "(*(byte *)(piVar3 + 7) & 0x10)" ( (binary_expression "*(byte *)(piVar3 + 7) & 0x10" (pointer_expression "*(byte *)(piVar3 + 7)" * (cast_expression "(byte *)(piVar3 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 7)" ( (binary_expression "piVar3 + 7" identifier + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(piVar3[6] == 0)" ( (binary_expression "piVar3[6] == 0" (subscript_expression "piVar3[6]" identifier [ number_literal ]) == number_literal) ))) )) || (parenthesized_expression "((*(byte *)(local_b0 + 0x16) & 1) == 0)" ( (binary_expression "(*(byte *)(local_b0 + 0x16) & 1) == 0" (parenthesized_expression "(*(byte *)(local_b0 + 0x16) & 1)" ( (binary_expression "*(byte *)(local_b0 + 0x16) & 1" (pointer_expression "*(byte *)(local_b0 + 0x16)" * (cast_expression "(byte *)(local_b0 + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 0x16)" ( (binary_expression "local_b0 + 0x16" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(local_b0[0x13] == 0)" ( (binary_expression "local_b0[0x13] == 0" (subscript_expression "local_b0[0x13]" identifier [ number_literal ]) == number_literal) ))) )) (goto_statement "goto LAB_00028860;" goto statement_identifier ;)) (expression_statement "pvVar9 = malloc(iVar19 * 0xc);" (assignment_expression "pvVar9 = malloc(iVar19 * 0xc)" identifier = (call_expression "malloc(iVar19 * 0xc)" identifier (argument_list "(iVar19 * 0xc)" ( (binary_expression "iVar19 * 0xc" identifier * number_literal) )))) ;) (expression_statement "local_b0[7] = (int)pvVar9;" (assignment_expression "local_b0[7] = (int)pvVar9" (subscript_expression "local_b0[7]" identifier [ number_literal ]) = (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }" if (parenthesized_expression "(pvVar9 != (void *)0x0)" ( (binary_expression "pvVar9 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }" { (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (if_statement "if (iVar19 != 0) goto LAB_0002875b;" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002875b;" goto statement_identifier ;)) (goto_statement "goto LAB_00028860;" goto statement_identifier ;) })) (expression_statement "local_88 = 0xc;" (assignment_expression "local_88 = 0xc" identifier = number_literal) ;) (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (goto_statement "goto LAB_00027c60;" goto statement_identifier ;) }))) (labeled_statement "LAB_00028505:\n    iVar19 = 0;" statement_identifier : (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;)) (expression_statement "bVar36 = false;" (assignment_expression "bVar36 = false" identifier = false) ;) })) (goto_statement "goto LAB_000284dd;" goto statement_identifier ;) (labeled_statement "LAB_00028330:\n  iVar7 = 0xc;" statement_identifier : (expression_statement "iVar7 = 0xc;" (assignment_expression "iVar7 = 0xc" identifier = number_literal) ;)) (labeled_statement "LAB_00028335:\n  local_b0 = (int *)*piVar3;" statement_identifier : (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;)) (expression_statement "local_88 = iVar7;" (assignment_expression "local_88 = iVar7" identifier = identifier) ;) (labeled_statement "LAB_00027c60:\n  puVar8 = (undefined4 *)local_b0[0xe];" statement_identifier : (expression_statement "puVar8 = (undefined4 *)local_b0[0xe];" (assignment_expression "puVar8 = (undefined4 *)local_b0[0xe]" identifier = (cast_expression "(undefined4 *)local_b0[0xe]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b0[0xe]" identifier [ number_literal ]))) ;)) (while_statement "while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }" while (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }" { (expression_statement "puVar16 = (undefined4 *)*puVar8;" (assignment_expression "puVar16 = (undefined4 *)*puVar8" identifier = (cast_expression "(undefined4 *)*puVar8" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "free(puVar8);" (call_expression "free(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) ;) (expression_statement "puVar8 = puVar16;" (assignment_expression "puVar8 = puVar16" identifier = identifier) ;) })) (expression_statement "local_b0[0xe] = 0;" (assignment_expression "local_b0[0xe] = 0" (subscript_expression "local_b0[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_b0[0x10] = 0x1f;" (assignment_expression "local_b0[0x10] = 0x1f" (subscript_expression "local_b0[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_b0[0xd] = 0;" (assignment_expression "local_b0[0xd] = 0" (subscript_expression "local_b0[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "free((void *)local_b0[4]);" (call_expression "free((void *)local_b0[4])" identifier (argument_list "((void *)local_b0[4])" ( (cast_expression "(void *)local_b0[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b0[4]" identifier [ number_literal ])) ))) ;) (expression_statement "local_b0[4] = 0;" (assignment_expression "local_b0[4] = 0" (subscript_expression "local_b0[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "free(local_6c);" (call_expression "free(local_6c)" identifier (argument_list "(local_6c)" ( identifier ))) ;) (expression_statement "free(local_68);" (call_expression "free(local_68)" identifier (argument_list "(local_68)" ( identifier ))) ;) (if_statement "if (local_29 != '\0') {\n    free(local_70);\n  }" if (parenthesized_expression "(local_29 != '\0')" ( (binary_expression "local_29 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    free(local_70);\n  }" { (expression_statement "free(local_70);" (call_expression "free(local_70)" identifier (argument_list "(local_70)" ( identifier ))) ;) })) (goto_statement "goto LAB_000282d8;" goto statement_identifier ;) (labeled_statement "LAB_0002897d:\n  do {\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  } while (uVar18 < uVar31);" statement_identifier : (do_statement "do {\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  } while (uVar18 < uVar31);" do (compound_statement "{\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  }" { (expression_statement "uVar23 = uVar31 + uVar18 >> 1;" (assignment_expression "uVar23 = uVar31 + uVar18 >> 1" identifier = (binary_expression "uVar31 + uVar18 >> 1" (binary_expression "uVar31 + uVar18" identifier + identifier) >> number_literal)) ;) (if_statement "if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }" if (parenthesized_expression "(iVar19 <= *(int *)((int)local_78 + uVar23 * 4))" ( (binary_expression "iVar19 <= *(int *)((int)local_78 + uVar23 * 4)" identifier <= (pointer_expression "*(int *)((int)local_78 + uVar23 * 4)" * (cast_expression "(int *)((int)local_78 + uVar23 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_78 + uVar23 * 4)" ( (binary_expression "(int)local_78 + uVar23 * 4" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar23 * 4" identifier * number_literal)) ))))) )) (compound_statement "{\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }" { (if_statement "if (uVar23 <= uVar18) break;" if (parenthesized_expression "(uVar23 <= uVar18)" ( (binary_expression "uVar23 <= uVar18" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar32 = uVar18 + uVar23 >> 1;" (assignment_expression "uVar32 = uVar18 + uVar23 >> 1" identifier = (binary_expression "uVar18 + uVar23 >> 1" (binary_expression "uVar18 + uVar23" identifier + identifier) >> number_literal)) ;) (expression_statement "iVar20 = *(int *)((int)local_78 + uVar32 * 4);" (assignment_expression "iVar20 = *(int *)((int)local_78 + uVar32 * 4)" identifier = (pointer_expression "*(int *)((int)local_78 + uVar32 * 4)" * (cast_expression "(int *)((int)local_78 + uVar32 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_78 + uVar32 * 4)" ( (binary_expression "(int)local_78 + uVar32 * 4" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar32 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar31 = uVar23;" (assignment_expression "uVar31 = uVar23" identifier = identifier) ;) (expression_statement "uVar23 = uVar32;" (assignment_expression "uVar23 = uVar32" identifier = identifier) ;) (while_statement "while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }" while (parenthesized_expression "(iVar19 <= iVar20)" ( (binary_expression "iVar19 <= iVar20" identifier <= identifier) )) (compound_statement "{\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }" { (if_statement "if (uVar23 <= uVar18) goto LAB_000289b4;" if (parenthesized_expression "(uVar23 <= uVar18)" ( (binary_expression "uVar23 <= uVar18" identifier <= identifier) )) (goto_statement "goto LAB_000289b4;" goto statement_identifier ;)) (expression_statement "uVar32 = uVar18 + uVar23 >> 1;" (assignment_expression "uVar32 = uVar18 + uVar23 >> 1" identifier = (binary_expression "uVar18 + uVar23 >> 1" (binary_expression "uVar18 + uVar23" identifier + identifier) >> number_literal)) ;) (expression_statement "uVar31 = uVar23;" (assignment_expression "uVar31 = uVar23" identifier = identifier) ;) (expression_statement "uVar23 = uVar32;" (assignment_expression "uVar23 = uVar32" identifier = identifier) ;) (expression_statement "iVar20 = *(int *)((int)local_78 + uVar32 * 4);" (assignment_expression "iVar20 = *(int *)((int)local_78 + uVar32 * 4)" identifier = (pointer_expression "*(int *)((int)local_78 + uVar32 * 4)" * (cast_expression "(int *)((int)local_78 + uVar32 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_78 + uVar32 * 4)" ( (binary_expression "(int)local_78 + uVar32 * 4" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar32 * 4" identifier * number_literal)) ))))) ;) })) })) (expression_statement "uVar18 = uVar23 + 1;" (assignment_expression "uVar18 = uVar23 + 1" identifier = (binary_expression "uVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar18 < uVar31)" ( (binary_expression "uVar18 < uVar31" identifier < identifier) )) ;)) (labeled_statement "LAB_000289b4:\n  if (*(int *)((int)local_78 + uVar18 * 4) == iVar19) {\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }" statement_identifier : (if_statement "if (*(int *)((int)local_78 + uVar18 * 4) == iVar19) {\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }" if (parenthesized_expression "(*(int *)((int)local_78 + uVar18 * 4) == iVar19)" ( (binary_expression "*(int *)((int)local_78 + uVar18 * 4) == iVar19" (pointer_expression "*(int *)((int)local_78 + uVar18 * 4)" * (cast_expression "(int *)((int)local_78 + uVar18 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_78 + uVar18 * 4)" ( (binary_expression "(int)local_78 + uVar18 * 4" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar18 * 4" identifier * number_literal)) )))) == identifier) )) (compound_statement "{\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }" { (labeled_statement "LAB_00028908:\n    iVar7 = iVar7 + 1;" statement_identifier : (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;)) (expression_statement "iVar19 = local_7c;" (assignment_expression "iVar19 = local_7c" identifier = identifier) ;) (if_statement "if (local_7c <= iVar7) goto LAB_000289f2;" if (parenthesized_expression "(local_7c <= iVar7)" ( (binary_expression "local_7c <= iVar7" identifier <= identifier) )) (goto_statement "goto LAB_000289f2;" goto statement_identifier ;)) (goto_statement "goto LAB_00028917;" goto statement_identifier ;) }))) (expression_statement "iVar7 = FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc);" (assignment_expression "iVar7 = FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc)" identifier = (call_expression "FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc)" identifier (argument_list "(&local_80,__ptr[6] + iVar19 * 0xc)" ( (pointer_expression "&local_80" & identifier) , (binary_expression "__ptr[6] + iVar19 * 0xc" (subscript_expression "__ptr[6]" identifier [ number_literal ]) + (binary_expression "iVar19 * 0xc" identifier * number_literal)) )))) ;) (if_statement "if (iVar7 != 0) goto LAB_00028a39;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00028a39;" goto statement_identifier ;)) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (expression_statement "iVar19 = local_7c;" (assignment_expression "iVar19 = local_7c" identifier = identifier) ;) (if_statement "if (local_7c < 2) goto LAB_000289f2;" if (parenthesized_expression "(local_7c < 2)" ( (binary_expression "local_7c < 2" identifier < number_literal) )) (goto_statement "goto LAB_000289f2;" goto statement_identifier ;)) (goto_statement "goto LAB_00028917;" goto statement_identifier ;) (labeled_statement "LAB_0002875b:\n  while( true ) {\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }" statement_identifier : (while_statement "while( true ) {\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }" { (expression_statement "puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);" (assignment_expression "puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc)" identifier = (cast_expression "(undefined4 *)((int)pvVar9 + uVar31 * 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar9 + uVar31 * 0xc)" ( (binary_expression "(int)pvVar9 + uVar31 * 0xc" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar31 * 0xc" identifier * number_literal)) )))) ;) (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (expression_statement "puVar8[1] = 0;" (assignment_expression "puVar8[1] = 0" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[2] = 0;" (assignment_expression "puVar8[2] = 0" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar23 = local_b0[2];" (assignment_expression "uVar23 = local_b0[2]" identifier = (subscript_expression "local_b0[2]" identifier [ number_literal ])) ;) (if_statement "if (uVar23 <= uVar31 + 1) break;" if (parenthesized_expression "(uVar23 <= uVar31 + 1)" ( (binary_expression "uVar23 <= uVar31 + 1" identifier <= (binary_expression "uVar31 + 1" identifier + number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pvVar9 = (void *)local_b0[7];" (assignment_expression "pvVar9 = (void *)local_b0[7]" identifier = (cast_expression "(void *)local_b0[7]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b0[7]" identifier [ number_literal ]))) ;) (expression_statement "uVar31 = uVar31 + 1;" (assignment_expression "uVar31 = uVar31 + 1" identifier = (binary_expression "uVar31 + 1" identifier + number_literal)) ;) }))) (if_statement "if (uVar23 != 0) {\n    local_9c = 0;\n    local_b0 = (int *)local_b0[6];\n    do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);\n  }" if (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) )) (compound_statement "{\n    local_9c = 0;\n    local_b0 = (int *)local_b0[6];\n    do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);\n  }" { (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) (expression_statement "local_b0 = (int *)local_b0[6];" (assignment_expression "local_b0 = (int *)local_b0[6]" identifier = (cast_expression "(int *)local_b0[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b0[6]" identifier [ number_literal ]))) ;) (do_statement "do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);" do (compound_statement "{\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    }" { (expression_statement "iVar19 = (int)local_b0 + local_9c * 0xc;" (assignment_expression "iVar19 = (int)local_b0 + local_9c * 0xc" identifier = (binary_expression "(int)local_b0 + local_9c * 0xc" (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "local_9c * 0xc" identifier * number_literal))) ;) (expression_statement "iVar7 = *(int *)(iVar19 + 8);" (assignment_expression "iVar7 = *(int *)(iVar19 + 8)" identifier = (pointer_expression "*(int *)(iVar19 + 8)" * (cast_expression "(int *)(iVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 8)" ( (binary_expression "iVar19 + 8" identifier + number_literal) ))))) ;) (if_statement "if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }" if (parenthesized_expression "(0 < *(int *)(iVar19 + 4))" ( (binary_expression "0 < *(int *)(iVar19 + 4)" number_literal < (pointer_expression "*(int *)(iVar19 + 4)" * (cast_expression "(int *)(iVar19 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 4)" ( (binary_expression "iVar19 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));" do (compound_statement "{\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        }" { (expression_statement "piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);" (assignment_expression "piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc)" identifier = (cast_expression "(int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc)" ( (binary_expression "piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc" (subscript_expression "piVar28[7]" identifier [ number_literal ]) + (binary_expression "*(int *)(iVar7 + iVar19 * 4) * 0xc" (pointer_expression "*(int *)(iVar7 + iVar19 * 4)" * (cast_expression "(int *)(iVar7 + iVar19 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + iVar19 * 4)" ( (binary_expression "iVar7 + iVar19 * 4" identifier + (binary_expression "iVar19 * 4" identifier * number_literal)) )))) * number_literal)) )))) ;) (expression_statement "iVar20 = piVar21[1];" (assignment_expression "iVar20 = piVar21[1]" identifier = (subscript_expression "piVar21[1]" identifier [ number_literal ])) ;) (expression_statement "pvVar9 = (void *)piVar21[2];" (assignment_expression "pvVar9 = (void *)piVar21[2]" identifier = (cast_expression "(void *)piVar21[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar21[2]" identifier [ number_literal ]))) ;) (if_statement "if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }" if (parenthesized_expression "(*piVar21 == iVar20)" ( (binary_expression "*piVar21 == iVar20" (pointer_expression "*piVar21" * identifier) == identifier) )) (compound_statement "{\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }" { (expression_statement "*piVar21 = (iVar20 + 1) * 2;" (assignment_expression "*piVar21 = (iVar20 + 1) * 2" (pointer_expression "*piVar21" * identifier) = (binary_expression "(iVar20 + 1) * 2" (parenthesized_expression "(iVar20 + 1)" ( (binary_expression "iVar20 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);" (assignment_expression "pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8)" identifier = (call_expression "realloc(pvVar9,(iVar20 + 1) * 8)" identifier (argument_list "(pvVar9,(iVar20 + 1) * 8)" ( identifier , (binary_expression "(iVar20 + 1) * 8" (parenthesized_expression "(iVar20 + 1)" ( (binary_expression "iVar20 + 1" identifier + number_literal) )) * number_literal) )))) ;) (if_statement "if (pvVar9 == (void *)0x0) goto LAB_00028330;" if (parenthesized_expression "(pvVar9 == (void *)0x0)" ( (binary_expression "pvVar9 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00028330;" goto statement_identifier ;)) (expression_statement "local_b0 = (int *)piVar28[6];" (assignment_expression "local_b0 = (int *)piVar28[6]" identifier = (cast_expression "(int *)piVar28[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar28[6]" identifier [ number_literal ]))) ;) (expression_statement "iVar20 = piVar21[1];" (assignment_expression "iVar20 = piVar21[1]" identifier = (subscript_expression "piVar21[1]" identifier [ number_literal ])) ;) (expression_statement "piVar21[2] = (int)pvVar9;" (assignment_expression "piVar21[2] = (int)pvVar9" (subscript_expression "piVar21[2]" identifier [ number_literal ]) = (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "piVar21[1] = iVar20 + 1;" (assignment_expression "piVar21[1] = iVar20 + 1" (subscript_expression "piVar21[1]" identifier [ number_literal ]) = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "*(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;" (assignment_expression "*(uint *)((int)pvVar9 + iVar20 * 4) = local_9c" (pointer_expression "*(uint *)((int)pvVar9 + iVar20 * 4)" * (cast_expression "(uint *)((int)pvVar9 + iVar20 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar9 + iVar20 * 4)" ( (binary_expression "(int)pvVar9 + iVar20 * 4" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar20 * 4" identifier * number_literal)) )))) = identifier) ;) }) while (parenthesized_expression "(iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc))" ( (binary_expression "iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc)" identifier < (pointer_expression "*(int *)((int)local_b0 + 4 + local_9c * 0xc)" * (cast_expression "(int *)((int)local_b0 + 4 + local_9c * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_b0 + 4 + local_9c * 0xc)" ( (binary_expression "(int)local_b0 + 4 + local_9c * 0xc" (binary_expression "(int)local_b0 + 4" (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) + (binary_expression "local_9c * 0xc" identifier * number_literal)) ))))) )) ;) (expression_statement "uVar23 = piVar28[2];" (assignment_expression "uVar23 = piVar28[2]" identifier = (subscript_expression "piVar28[2]" identifier [ number_literal ])) ;) })) (expression_statement "local_9c = local_9c + 1;" (assignment_expression "local_9c = local_9c + 1" identifier = (binary_expression "local_9c + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_9c < uVar23)" ( (binary_expression "local_9c < uVar23" identifier < identifier) )) ;) })) (labeled_statement "LAB_00028860:\n  local_88 = 0;" statement_identifier : (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;)) (if_statement "if (((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0)) {\n    if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }\n    __ptr[0x17] = 1;\n    *(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;\n  }" if (parenthesized_expression "(((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0))" ( (binary_expression "((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0)" (parenthesized_expression "((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0)" ( (binary_expression "(*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0" (parenthesized_expression "(*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0)" ( (binary_expression "*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0" (binary_expression "*(byte *)(__ptr + 0x16) >> 2" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) >> number_literal) & (binary_expression "uVar18 == 0" identifier == number_literal)) )) != number_literal) )) && (parenthesized_expression "(piVar3[5] == 0)" ( (binary_expression "piVar3[5] == 0" (subscript_expression "piVar3[5]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }\n    __ptr[0x17] = 1;\n    *(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;\n  }" { (if_statement "if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }" if (parenthesized_expression "(__ptr[2] != 0)" ( (binary_expression "__ptr[2] != 0" (subscript_expression "__ptr[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }" { (if_statement "if (0xc < *(byte *)(*__ptr + 4)) {\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }" if (parenthesized_expression "(0xc < *(byte *)(*__ptr + 4))" ( (binary_expression "0xc < *(byte *)(*__ptr + 4)" number_literal < (pointer_expression "*(byte *)(*__ptr + 4)" * (cast_expression "(byte *)(*__ptr + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*__ptr + 4)" ( (binary_expression "*__ptr + 4" (pointer_expression "*__ptr" * identifier) + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }" { comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) comment comment (expression_statement "iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();" (assignment_expression "iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))()" identifier = (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))" ( (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669)" * (cast_expression "(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669)" ( (binary_expression "*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669" (binary_expression "*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4)" * (cast_expression "(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4)" ( (binary_expression "unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4" (binary_expression "unaff_EDI + 0x5821" identifier + number_literal) + (binary_expression "(uint)*(byte *)(*__ptr + 4) * 4" (binary_expression "(uint)*(byte *)(*__ptr + 4)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*__ptr + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*__ptr + 4)" ( (binary_expression "*__ptr + 4" (pointer_expression "*__ptr" * identifier) + number_literal) )))) * number_literal)) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar7;" return identifier ;) })) (expression_statement "__ptr[0x17] = 1;" (assignment_expression "__ptr[0x17] = 1" (subscript_expression "__ptr[0x17]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;" (assignment_expression "*(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) = (binary_expression "(0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9" (binary_expression "(0 < __ptr[0x13]) * '\x02'" (parenthesized_expression "(0 < __ptr[0x13])" ( (binary_expression "0 < __ptr[0x13]" number_literal < (subscript_expression "__ptr[0x13]" identifier [ number_literal ])) )) * (char_literal "'\x02'" ' escape_sequence ')) | (binary_expression "*(byte *)(__ptr + 0x16) & 0xf9" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) & number_literal))) ;) })) (expression_statement "iVar7 = *(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c);" (assignment_expression "iVar7 = *(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c)" identifier = (pointer_expression "*(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c)" * (cast_expression "(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(__ptr[0xd] + 0xc) + 0x1c)" ( (binary_expression "*(int *)(__ptr[0xd] + 0xc) + 0x1c" (pointer_expression "*(int *)(__ptr[0xd] + 0xc)" * (cast_expression "(int *)(__ptr[0xd] + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr[0xd] + 0xc)" ( (binary_expression "__ptr[0xd] + 0xc" (subscript_expression "__ptr[0xd]" identifier [ number_literal ]) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "__ptr[0x12] = iVar7;" (assignment_expression "__ptr[0x12] = iVar7" (subscript_expression "__ptr[0x12]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = __ptr[6] + iVar7 * 0xc;" (assignment_expression "iVar7 = __ptr[6] + iVar7 * 0xc" identifier = (binary_expression "__ptr[6] + iVar7 * 0xc" (subscript_expression "__ptr[6]" identifier [ number_literal ]) + (binary_expression "iVar7 * 0xc" identifier * number_literal))) ;) (expression_statement "iVar19 = *(int *)(iVar7 + 4);" (assignment_expression "iVar19 = *(int *)(iVar7 + 4)" identifier = (pointer_expression "*(int *)(iVar7 + 4)" * (cast_expression "(int *)(iVar7 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar19 < 1) {\n    local_80 = 0;\n    local_7c = 0;\n    local_78 = (void *)0x0;\n    local_84 = 0;\nLAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);\n    __ptr[9] = iVar19;\n    iVar7 = local_84;\n    if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }\n  }\n  else {\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }" if (parenthesized_expression "(iVar19 < 1)" ( (binary_expression "iVar19 < 1" identifier < number_literal) )) (compound_statement "{\n    local_80 = 0;\n    local_7c = 0;\n    local_78 = (void *)0x0;\n    local_84 = 0;\nLAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);\n    __ptr[9] = iVar19;\n    iVar7 = local_84;\n    if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }\n  }" { (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;) (expression_statement "local_78 = (void *)0x0;" (assignment_expression "local_78 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);" statement_identifier : (expression_statement "iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);" (assignment_expression "iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0)" identifier = (call_expression "FUN_0001c950(&local_84,__ptr,&local_80,0)" identifier (argument_list "(&local_84,__ptr,&local_80,0)" ( (pointer_expression "&local_84" & identifier) , identifier , (pointer_expression "&local_80" & identifier) , number_literal )))) ;)) (expression_statement "__ptr[9] = iVar19;" (assignment_expression "__ptr[9] = iVar19" (subscript_expression "__ptr[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = local_84;" (assignment_expression "iVar7 = local_84" identifier = identifier) ;) (if_statement "if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }" { (if_statement "if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }" if (parenthesized_expression "(*(char *)(iVar19 + 0x34) < '\0')" ( (binary_expression "*(char *)(iVar19 + 0x34) < '\0'" (pointer_expression "*(char *)(iVar19 + 0x34)" * (cast_expression "(char *)(iVar19 + 0x34)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x34)" ( (binary_expression "iVar19 + 0x34" identifier + number_literal) )))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }" { (expression_statement "iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);" (assignment_expression "iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1)" identifier = (call_expression "FUN_0001c950(&local_84,__ptr,&local_80,1)" identifier (argument_list "(&local_84,__ptr,&local_80,1)" ( (pointer_expression "&local_84" & identifier) , identifier , (pointer_expression "&local_80" & identifier) , number_literal )))) ;) (expression_statement "__ptr[10] = iVar7;" (assignment_expression "__ptr[10] = iVar7" (subscript_expression "__ptr[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);" (assignment_expression "iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2)" identifier = (call_expression "FUN_0001c950(&local_84,__ptr,&local_80,2)" identifier (argument_list "(&local_84,__ptr,&local_80,2)" ( (pointer_expression "&local_84" & identifier) , identifier , (pointer_expression "&local_80" & identifier) , number_literal )))) ;) (expression_statement "__ptr[0xb] = iVar7;" (assignment_expression "__ptr[0xb] = iVar7" (subscript_expression "__ptr[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);" (assignment_expression "iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6)" identifier = (call_expression "FUN_0001c950(&local_84,__ptr,&local_80,6)" identifier (argument_list "(&local_84,__ptr,&local_80,6)" ( (pointer_expression "&local_84" & identifier) , identifier , (pointer_expression "&local_80" & identifier) , number_literal )))) ;) (expression_statement "__ptr[0xc] = iVar19;" (assignment_expression "__ptr[0xc] = iVar19" (subscript_expression "__ptr[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = local_84;" (assignment_expression "iVar7 = local_84" identifier = identifier) ;) (if_statement "if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;" if (parenthesized_expression "(((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0))" ( (binary_expression "((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)" (parenthesized_expression "((__ptr[10] == 0) || (__ptr[0xb] == 0))" ( (binary_expression "(__ptr[10] == 0) || (__ptr[0xb] == 0)" (parenthesized_expression "(__ptr[10] == 0)" ( (binary_expression "__ptr[10] == 0" (subscript_expression "__ptr[10]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "(__ptr[0xb] == 0)" ( (binary_expression "__ptr[0xb] == 0" (subscript_expression "__ptr[0xb]" identifier [ number_literal ]) == number_literal) ))) )) || (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_00028a39;" goto statement_identifier ;)) }) (else_clause "else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }" else (compound_statement "{\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }" { (expression_statement "__ptr[0xc] = iVar19;" (assignment_expression "__ptr[0xc] = iVar19" (subscript_expression "__ptr[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__ptr[0xb] = iVar19;" (assignment_expression "__ptr[0xb] = iVar19" (subscript_expression "__ptr[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__ptr[10] = iVar19;" (assignment_expression "__ptr[10] = iVar19" (subscript_expression "__ptr[10]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "free(local_78);" (call_expression "free(local_78)" identifier (argument_list "(local_78)" ( identifier ))) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) })) }) (else_clause "else {\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }" else (compound_statement "{\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }" { (expression_statement "local_80 = iVar19;" (assignment_expression "local_80 = iVar19" identifier = identifier) ;) (expression_statement "local_7c = iVar19;" (assignment_expression "local_7c = iVar19" identifier = identifier) ;) (expression_statement "local_78 = malloc(iVar19 * 4);" (assignment_expression "local_78 = malloc(iVar19 * 4)" identifier = (call_expression "malloc(iVar19 * 4)" identifier (argument_list "(iVar19 * 4)" ( (binary_expression "iVar19 * 4" identifier * number_literal) )))) ;) (if_statement "if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }" if (parenthesized_expression "(local_78 != (void *)0x0)" ( (binary_expression "local_78 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }" { (expression_statement "memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);" (call_expression "memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4)" identifier (argument_list "(local_78,*(void **)(iVar7 + 8),iVar19 * 4)" ( identifier , (pointer_expression "*(void **)(iVar7 + 8)" * (cast_expression "(void **)(iVar7 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) )))) , (binary_expression "iVar19 * 4" identifier * number_literal) ))) ;) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (if_statement "if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }" if (parenthesized_expression "(0 < __ptr[0x13])" ( (binary_expression "0 < __ptr[0x13]" number_literal < (subscript_expression "__ptr[0x13]" identifier [ number_literal ])) )) (compound_statement "{\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);" statement_identifier : (expression_statement "iVar20 = *(int *)((int)local_78 + iVar7 * 4);" (assignment_expression "iVar20 = *(int *)((int)local_78 + iVar7 * 4)" identifier = (pointer_expression "*(int *)((int)local_78 + iVar7 * 4)" * (cast_expression "(int *)((int)local_78 + iVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_78 + iVar7 * 4)" ( (binary_expression "(int)local_78 + iVar7 * 4" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;)) (expression_statement "piVar28 = (int *)(*__ptr + iVar20 * 8);" (assignment_expression "piVar28 = (int *)(*__ptr + iVar20 * 8)" identifier = (cast_expression "(int *)(*__ptr + iVar20 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*__ptr + iVar20 * 8)" ( (binary_expression "*__ptr + iVar20 * 8" (pointer_expression "*__ptr" * identifier) + (binary_expression "iVar20 * 8" identifier * number_literal)) )))) ;) (if_statement "if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }" if (parenthesized_expression "((char)piVar28[1] == '\x04')" ( (binary_expression "(char)piVar28[1] == '\x04'" (cast_expression "(char)piVar28[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar28[1]" identifier [ number_literal ])) == (char_literal "'\x04'" ' escape_sequence ')) )) (compound_statement "{\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }" { (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (do_statement "do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);" do (compound_statement "{\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          }" { (expression_statement "piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);" (assignment_expression "piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8)" identifier = (cast_expression "(int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8)" ( (binary_expression "*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8" (pointer_expression "*__ptr" * identifier) + (binary_expression "*(int *)((int)local_78 + iVar26 * 4) * 8" (pointer_expression "*(int *)((int)local_78 + iVar26 * 4)" * (cast_expression "(int *)((int)local_78 + iVar26 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_78 + iVar26 * 4)" ( (binary_expression "(int)local_78 + iVar26 * 4" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar26 * 4" identifier * number_literal)) )))) * number_literal)) )))) ;) (if_statement "if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }" if (parenthesized_expression "(((char)piVar21[1] == '\t') && (*piVar21 == *piVar28))" ( (binary_expression "((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)" (parenthesized_expression "((char)piVar21[1] == '\t')" ( (binary_expression "(char)piVar21[1] == '\t'" (cast_expression "(char)piVar21[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar21[1]" identifier [ number_literal ])) == (char_literal "'\t'" ' escape_sequence ')) )) && (parenthesized_expression "(*piVar21 == *piVar28)" ( (binary_expression "*piVar21 == *piVar28" (pointer_expression "*piVar21" * identifier) == (pointer_expression "*piVar28" * identifier)) ))) )) (compound_statement "{\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }" { (expression_statement "uVar31 = iVar19 - 1;" (assignment_expression "uVar31 = iVar19 - 1" identifier = (binary_expression "iVar19 - 1" identifier - number_literal)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);" (assignment_expression "iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8)" identifier = (pointer_expression "**(int **)(__ptr[5] + iVar20 * 0xc + 8)" * (pointer_expression "*(int **)(__ptr[5] + iVar20 * 0xc + 8)" * (cast_expression "(int **)(__ptr[5] + iVar20 * 0xc + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(__ptr[5] + iVar20 * 0xc + 8)" ( (binary_expression "__ptr[5] + iVar20 * 0xc + 8" (binary_expression "__ptr[5] + iVar20 * 0xc" (subscript_expression "__ptr[5]" identifier [ number_literal ]) + (binary_expression "iVar20 * 0xc" identifier * number_literal)) + number_literal) )))))) ;) (if_statement "if (uVar31 == 0) goto LAB_000289b4;" if (parenthesized_expression "(uVar31 == 0)" ( (binary_expression "uVar31 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000289b4;" goto statement_identifier ;)) (goto_statement "goto LAB_0002897d;" goto statement_identifier ;) })) (expression_statement "iVar26 = iVar26 + 1;" (assignment_expression "iVar26 = iVar26 + 1" identifier = (binary_expression "iVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar19 != iVar26)" ( (binary_expression "iVar19 != iVar26" identifier != identifier) )) ;) })) (goto_statement "goto LAB_00028908;" goto statement_identifier ;) })) (goto_statement "goto LAB_000289f2;" goto statement_identifier ;) })) (expression_statement "iVar7 = 0xc;" (assignment_expression "iVar7 = 0xc" identifier = number_literal) ;) }))) (labeled_statement "LAB_00028a39:\n  iVar19 = *piVar3;" statement_identifier : (expression_statement "iVar19 = *piVar3;" (assignment_expression "iVar19 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;)) (expression_statement "puVar8 = *(undefined4 **)(iVar19 + 0x38);" (assignment_expression "puVar8 = *(undefined4 **)(iVar19 + 0x38)" identifier = (pointer_expression "*(undefined4 **)(iVar19 + 0x38)" * (cast_expression "(undefined4 **)(iVar19 + 0x38)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar19 + 0x38)" ( (binary_expression "iVar19 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "local_88 = iVar7;" (assignment_expression "local_88 = iVar7" identifier = identifier) ;) (while_statement "while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }" while (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }" { (expression_statement "puVar16 = (undefined4 *)*puVar8;" (assignment_expression "puVar16 = (undefined4 *)*puVar8" identifier = (cast_expression "(undefined4 *)*puVar8" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "free(puVar8);" (call_expression "free(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) ;) (expression_statement "puVar8 = puVar16;" (assignment_expression "puVar8 = puVar16" identifier = identifier) ;) })) (expression_statement "*(undefined4 *)(iVar19 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(iVar19 + 0x38) = 0" (pointer_expression "*(undefined4 *)(iVar19 + 0x38)" * (cast_expression "(undefined4 *)(iVar19 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x38)" ( (binary_expression "iVar19 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar19 + 0x40) = 0x1f;" (assignment_expression "*(undefined4 *)(iVar19 + 0x40) = 0x1f" (pointer_expression "*(undefined4 *)(iVar19 + 0x40)" * (cast_expression "(undefined4 *)(iVar19 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x40)" ( (binary_expression "iVar19 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar19 + 0x34) = 0;" (assignment_expression "*(undefined4 *)(iVar19 + 0x34) = 0" (pointer_expression "*(undefined4 *)(iVar19 + 0x34)" * (cast_expression "(undefined4 *)(iVar19 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x34)" ( (binary_expression "iVar19 + 0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "free(*(void **)(iVar19 + 0x10));" (call_expression "free(*(void **)(iVar19 + 0x10))" identifier (argument_list "(*(void **)(iVar19 + 0x10))" ( (pointer_expression "*(void **)(iVar19 + 0x10)" * (cast_expression "(void **)(iVar19 + 0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar19 + 0x10)" ( (binary_expression "iVar19 + 0x10" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar19 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(iVar19 + 0x10) = 0" (pointer_expression "*(undefined4 *)(iVar19 + 0x10)" * (cast_expression "(undefined4 *)(iVar19 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x10)" ( (binary_expression "iVar19 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "free(local_6c);" (call_expression "free(local_6c)" identifier (argument_list "(local_6c)" ( identifier ))) ;) (expression_statement "free(local_68);" (call_expression "free(local_68)" identifier (argument_list "(local_68)" ( identifier ))) ;) (if_statement "if (local_29 != '\0') {\n    free(local_70);\n  }" if (parenthesized_expression "(local_29 != '\0')" ( (binary_expression "local_29 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    free(local_70);\n  }" { (expression_statement "free(local_70);" (call_expression "free(local_70)" identifier (argument_list "(local_70)" ( identifier ))) ;) })) (expression_statement "iVar7 = local_88;" (assignment_expression "iVar7 = local_88" identifier = identifier) ;) (if_statement "if (local_88 == 0) goto LAB_000282f4;" if (parenthesized_expression "(local_88 == 0)" ( (binary_expression "local_88 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000282f4;" goto statement_identifier ;)) (labeled_statement "LAB_000282d8:\n  FUN_0001c000();" statement_identifier : (expression_statement "FUN_0001c000();" (call_expression "FUN_0001c000()" identifier (argument_list "()" ( ))) ;)) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (expression_statement "piVar3[1] = 0;" (assignment_expression "piVar3[1] = 0" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar7 = local_88;" (assignment_expression "iVar7 = local_88" identifier = identifier) ;) (labeled_statement "LAB_000282f4:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002a720();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002a720();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0002a720();\n  }" { comment (expression_statement "FUN_0002a720();" (call_expression "FUN_0002a720()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar7;" return identifier ;) })))
(translation_unit "reg_errcode_t re_compile_internal(regex_t *preg,char *pattern,size_t length,reg_syntax_t syntax)\n\n{\n  re_token_t *prVar1;\n  undefined1 *puVar2;\n  byte bVar3;\n  int iVar4;\n  uchar *puVar5;\n  bin_tree_storage_t *pbVar6;\n  re_dfa_t *prVar7;\n  re_token_t token;\n  bin_tree_t **ppbVar8;\n  regex_t *preg_00;\n  re_token_t *prVar9;\n  re_state_table_entry *prVar10;\n  size_t sVar11;\n  byte *pbVar12;\n  uchar *puVar13;\n  anon_union_4_5_a39f51ca_for_opr aVar14;\n  reg_errcode_t rVar15;\n  bin_tree_t *pbVar16;\n  Idx *pIVar17;\n  Idx *pIVar18;\n  re_node_set *prVar19;\n  re_node_set *prVar20;\n  size_t *__ptr;\n  Idx IVar21;\n  bin_tree_t *pbVar22;\n  wint_t wVar23;\n  re_dfastate_t *prVar24;\n  __int32_t **pp_Var25;\n  re_dfa_t *dfa;\n  bin_tree_storage_t *pbVar26;\n  char cVar27;\n  uint extraout_ECX;\n  uint uVar28;\n  int iVar29;\n  uint uVar30;\n  int iVar31;\n  int iVar32;\n  size_t sVar33;\n  bin_tree_t *pbVar34;\n  re_bitset_ptr_t pbVar35;\n  uint *puVar36;\n  int iVar37;\n  size_t __size;\n  bin_tree_t *pbVar38;\n  size_t sVar39;\n  uint uVar40;\n  uint uVar41;\n  re_hashval_t rVar42;\n  bin_tree_t *pbVar43;\n  int unaff_EDI;\n  undefined4 *puVar44;\n  byte *pbVar45;\n  uchar **ppuVar46;\n  int in_GS_OFFSET;\n  bool bVar47;\n  bool bVar48;\n  byte bVar49;\n  undefined8 uVar50;\n  reg_syntax_t syntax_00;\n  anon_union_4_5_a39f51ca_for_opr in_stack_ffffff44;\n  reg_errcode_t *in_stack_ffffff48;\n  re_dfa_t *local_b0;\n  uint local_9c;\n  int local_98;\n  int local_94;\n  reg_errcode_t err;\n  reg_errcode_t err_2;\n  re_token_t current_token;\n  Idx *local_78;\n  re_string_t regexp;\n  \n  bVar49 = 0;\n  uVar50 = __x86_get_pc_thunk_di();\n  puVar13 = (uchar *)((ulonglong)uVar50 >> 0x20);\n  preg_00 = (regex_t *)uVar50;\n  dfa = preg_00->buffer;\n  iVar4 = *(int *)(in_GS_OFFSET + 0x14);\n  preg_00->field_0x1c = preg_00->field_0x1c & 0x90;\n  err = _REG_NOERROR;\n  preg_00->syntax = (reg_syntax_t)preg;\n  preg_00->used = 0;\n  preg_00->re_nsub = 0;\n  if (preg_00->allocated < 0x88) {\n    dfa = (re_dfa_t *)realloc(dfa,0x88);\n    if (dfa == (re_dfa_t *)0x0) {\n      rVar15 = _REG_ESPACE;\n      goto LAB_000282f4;\n    }\n    preg_00->allocated = 0x88;\n    preg_00->buffer = dfa;\n  }\n  puVar44 = (undefined4 *)((uint)&dfa->nodes_alloc & 0xfffffffc);\n  preg_00->used = 0x88;\n  dfa->nodes = (re_token_t *)0x0;\n  dfa->subexp_map = (Idx *)0x0;\n  uVar28 = (uint)((int)dfa + (0x88 - (int)puVar44)) >> 2;\n  for (; uVar28 != 0; uVar28 = uVar28 - 1) {\n    *puVar44 = 0;\n    puVar44 = puVar44 + (uint)bVar49 * -2 + 1;\n  }\n  dfa->str_tree_storage_idx = 0x1f;\n  if (extraout_ECX < 0xaaaaaaa) {\n    sVar39 = extraout_ECX + 1;\n    dfa->nodes_alloc = sVar39;\n    prVar9 = (re_token_t *)malloc(sVar39 * 8);\n    dfa->nodes = prVar9;\n    if (extraout_ECX == 0) {\n      rVar42 = 0;\n      uVar28 = 1;\n    }\n    else {\n      uVar28 = 1;\n      do {\n        uVar28 = uVar28 * 2;\n      } while (uVar28 <= extraout_ECX);\n      rVar42 = uVar28 - 1;\n    }\n    prVar10 = (re_state_table_entry *)calloc(0xc,uVar28);\n    dfa->state_hash_mask = rVar42;\n    dfa->state_table = prVar10;\n    sVar11 = __ctype_get_mb_cur_max();\n    dfa->mb_cur_max = sVar11;\n    pbVar12 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar12 & 0xdf) == 0x55) && ((pbVar12[1] & 0xdf) == 0x54)) &&\n       ((pbVar12[2] & 0xdf) == 0x46)) {\n      bVar47 = pbVar12[3] < 0x2d;\n      bVar48 = pbVar12[3] == 0x2d;\n      iVar29 = 2;\n      pbVar12 = pbVar12 + bVar48 + 3;\n      pbVar45 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar29 == 0) break;\n        iVar29 = iVar29 + -1;\n        bVar47 = *pbVar12 < *pbVar45;\n        bVar48 = *pbVar12 == *pbVar45;\n        pbVar12 = pbVar12 + (uint)bVar49 * -2 + 1;\n        pbVar45 = pbVar45 + (uint)bVar49 * -2 + 1;\n      } while (bVar48);\n      if ((!bVar47 && !bVar48) == bVar47) {\n        dfa->field_0x58 = dfa->field_0x58 | 4;\n      }\n    }\n    bVar3 = dfa->field_0x58;\n    dfa->field_0x58 = bVar3 & 0xf7;\n    if (1 < dfa->mb_cur_max) {\n      if ((bVar3 & 4) == 0) {\n        pbVar35 = (re_bitset_ptr_t)calloc(0x20,1);\n        dfa->sb_char = pbVar35;\n        if (pbVar35 == (re_bitset_ptr_t)0x0) goto LAB_000282d0;\n        iVar29 = 0;\n        do {\n          uVar28 = iVar29 * 8;\n          iVar32 = 0;\n          do {\n            while( true ) {\n              wVar23 = btowc(uVar28);\n              if (wVar23 != 0xffffffff) break;\n              if ((uVar28 & 0xffffff80) == 0) {\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }\nLAB_00028404:\n              iVar32 = iVar32 + 1;\n              uVar28 = uVar28 + 1;\n              if (iVar32 == 0x20) goto LAB_00028460;\n            }\n            puVar36 = (uint *)((int)dfa->sb_char + iVar29);\n            *puVar36 = *puVar36 | 1 << ((byte)iVar32 & 0x1f);\n            if ((uVar28 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar23 != uVar28) goto LAB_000283fc;\n            iVar32 = iVar32 + 1;\n            uVar28 = uVar28 + 1;\n          } while (iVar32 != 0x20);\nLAB_00028460:\n          iVar29 = iVar29 + 4;\n        } while (iVar29 != 0x20);\n      }\n      else {\n        dfa->sb_char = (re_bitset_ptr_t)(unaff_EDI + 0x58c9);\n      }\n    }\n    if ((dfa->nodes != (re_token_t *)0x0) && (dfa->state_table != (re_state_table_entry *)0x0)) {\n      err = _REG_NOERROR;\n      puVar5 = preg_00->translate;\n      ppuVar46 = &regexp.mbs;\n      for (iVar29 = 0x13; iVar29 != 0; iVar29 = iVar29 + -1) {\n        *ppuVar46 = (uchar *)0x0;\n        ppuVar46 = ppuVar46 + (uint)bVar49 * -2 + 1;\n      }\n      uVar28 = (uint)preg & 0x400000;\n      regexp.icase = uVar28 != 0;\n      regexp.mbs_allocated = puVar5 != (uchar *)0x0 || uVar28 != 0;\n      iVar29 = dfa->mb_cur_max;\n      regexp.map_notascii = (byte)dfa->field_0x58 >> 3 & 1;\n      regexp.is_utf8 = (byte)dfa->field_0x58 >> 2 & 1;\n      regexp.raw_mbs = puVar13;\n      regexp.len = extraout_ECX;\n      regexp.trans = puVar5;\n      regexp.mb_cur_max = iVar29;\n      if (extraout_ECX != 0) {\n        aVar14.idx = re_string_realloc_buffers(&regexp,sVar39);\n        if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n        iVar29 = dfa->mb_cur_max;\n      }\n      if (regexp.mbs_allocated != '\0') {\n        puVar13 = regexp.mbs;\n      }\n      regexp.mbs = puVar13;\n      if (uVar28 == 0) {\n        if (iVar29 < 2) {\n          iVar29 = regexp.bufs_len;\n          regexp.valid_raw_len = regexp.bufs_len;\n          if (puVar5 != (uchar *)0x0) {\n            if (regexp.len <= regexp.bufs_len) {\n              regexp.bufs_len = regexp.len;\n            }\n            iVar29 = regexp.valid_len;\n            regexp.valid_raw_len = regexp.valid_len;\n            if (regexp.valid_len < regexp.bufs_len) {\n              puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n              iVar32 = regexp.valid_len + 1;\n              iVar29 = regexp.bufs_len;\n              regexp.valid_raw_len = regexp.bufs_len;\n              if (iVar32 < regexp.bufs_len) {\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }\n            }\n          }\n        }\n        else {\n          build_wcs_buffer(&regexp);\n          iVar29 = regexp.valid_len;\n        }\n      }\n      else {\n        if (1 < iVar29) {\n          do {\n            aVar14.idx = build_wcs_upper_buffer(&regexp);\n            if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n            iVar29 = regexp.valid_len;\n            if (((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;\n            rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2);\n          } while (rVar15 == _REG_NOERROR);\n          local_b0 = preg_00->buffer;\n          err = rVar15;\n          goto LAB_00027c60;\n        }\n        local_b0 = (re_dfa_t *)regexp.len;\n        if (regexp.bufs_len <= regexp.len) {\n          local_b0 = (re_dfa_t *)regexp.bufs_len;\n        }\n        if (regexp.valid_len < (int)local_b0) {\n          pp_Var25 = __ctype_toupper_loc();\n          while( true ) {\n            if (regexp.trans == (uchar *)0x0) {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n            }\n            else {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }\n            if (local_b0 == (re_dfa_t *)(regexp.valid_len + 1)) break;\n            regexp.valid_len = regexp.valid_len + 1;\n            puVar13 = regexp.mbs;\n          }\n        }\n        else {\n          local_b0 = (re_dfa_t *)regexp.valid_len;\n        }\n        regexp.valid_raw_len = (Idx)local_b0;\n        iVar29 = regexp.valid_raw_len;\n      }\nLAB_00027d86:\n      regexp.valid_len = iVar29;\n      err = _REG_NOERROR;\n      prVar7 = preg_00->buffer;\n      preg_00->re_nsub = 0;\n      prVar7->syntax = (reg_syntax_t)preg;\n      syntax_00 = 0x27db7;\n      iVar29 = peek_token(&current_token,&regexp,(uint)preg | 0x800000);\n      regexp.cur_idx = regexp.cur_idx + iVar29;\n      pbVar16 = parse_reg_exp((re_string_t *)preg,(regex_t *)0x0,(re_token_t *)&err,syntax_00,\n                              in_stack_ffffff44.idx,in_stack_ffffff48);\n      if ((err != _REG_NOERROR) && (pbVar16 == (bin_tree_t *)0x0)) {\n        dfa->str_tree = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        goto LAB_00027c60;\n      }\n      iVar29 = prVar7->str_tree_storage_idx;\n      if (iVar29 == 0x1f) {\n        pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n        if (pbVar26 != (bin_tree_storage_t *)0x0) {\n          iVar32 = 1;\n          iVar37 = 4;\n          iVar31 = 0x18;\n          pbVar26->next = prVar7->str_tree_storage;\n          iVar29 = 0;\n          prVar7->str_tree_storage = pbVar26;\n          goto LAB_00027e0d;\n        }\n        local_b0 = preg_00->buffer;\n        if (pbVar16 != (bin_tree_t *)0x0) {\n          pbVar43 = (bin_tree_t *)0x0;\n          bVar47 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        pbVar26 = prVar7->str_tree_storage;\n        iVar32 = iVar29 + 1;\n        iVar31 = iVar29 * 0x20 + 0x18;\n        iVar37 = iVar29 * 0x20 + 4;\nLAB_00027e0d:\n        prVar7->str_tree_storage_idx = iVar32;\n        pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].left = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].right = (bin_tree_t *)0x0;\n        *(undefined1 *)((int)&pbVar26->data[0].parent + iVar31) = 2;\n        puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n        *puVar2 = *puVar2 & 0xf3;\n        pbVar43 = (bin_tree_t *)((int)pbVar26->data + iVar37 + -4);\n        bVar47 = pbVar43 == (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].node_idx = -1;\n        pbVar22 = pbVar43;\n        if (pbVar16 != (bin_tree_t *)0x0) {\nLAB_00027e67:\n          iVar29 = prVar7->str_tree_storage_idx;\n          if (iVar29 == 0x1f) {\n            pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n            if (pbVar26 == (bin_tree_storage_t *)0x0) goto LAB_00028d28;\n            iVar32 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            pbVar26->next = prVar7->str_tree_storage;\n            iVar29 = 0;\n            prVar7->str_tree_storage = pbVar26;\n          }\n          else {\n            iVar32 = iVar29 + 1;\n            local_98 = iVar29 * 0x20 + 4;\n            local_94 = iVar29 * 0x20 + 0x18;\n            pbVar26 = prVar7->str_tree_storage;\n          }\n          prVar7->str_tree_storage_idx = iVar32;\n          pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n          pbVar22 = (bin_tree_t *)((int)pbVar26->data + local_98 + -4);\n          pbVar26->data[iVar29].left = pbVar16;\n          pbVar26->data[iVar29].right = pbVar43;\n          *(undefined1 *)((int)&pbVar26->data[0].parent + local_94) = 0x10;\n          puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n          *puVar2 = *puVar2 & 0xf3;\n          pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].node_idx = -1;\n          bVar47 = (bool)(bVar47 | pbVar22 == (bin_tree_t *)0x0);\n          pbVar16->parent = pbVar22;\n          if (pbVar43 != (bin_tree_t *)0x0) {\n            pbVar43->parent = pbVar22;\n          }\n        }\n        prVar7 = local_b0;\n        if (!bVar47) {\n          dfa->str_tree = pbVar22;\n          sVar11 = local_b0->nodes_alloc * 4;\n          __size = local_b0->nodes_alloc * 0xc;\n          pIVar17 = (Idx *)malloc(sVar11);\n          local_b0->nexts = pIVar17;\n          pIVar18 = (Idx *)malloc(sVar11);\n          local_b0->org_indices = pIVar18;\n          prVar19 = (re_node_set *)malloc(__size);\n          local_b0->edests = prVar19;\n          prVar20 = (re_node_set *)malloc(__size);\n          local_b0->eclosures = prVar20;\n          if ((((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0)) && (prVar20 != (re_node_set *)0x0)) {\n            sVar39 = preg_00->re_nsub;\n            __ptr = (size_t *)malloc(sVar39 * 4);\n            local_b0->subexp_map = (Idx *)__ptr;\n            pbVar16 = local_b0->str_tree;\n            if (__ptr != (size_t *)0x0) {\n              sVar33 = 0;\n              if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }\n              cVar27 = (pbVar16->token).field_0x4;\n              pbVar43 = pbVar16->left;\n              pbVar22 = pbVar16;\nLAB_00028010:\n              pbVar38 = pbVar22;\n              pbVar22 = pbVar43;\n              pbVar34 = pbVar22;\n              if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar27 != '\x11') goto joined_r0x00028003;\n              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          err = _REG_ESPACE;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      err = _REG_ESPACE;\n      dfa->str_tree = (bin_tree_t *)0x0;\n      goto LAB_00027c60;\n    }\n  }\nLAB_000282d0:\n  err = _REG_ESPACE;\n  goto LAB_000282d8;\ncode_r0x00028148:\n  cVar27 = (pbVar22->token).field_0x4;\n  pbVar34 = pbVar22->left;\n  pbVar43 = pbVar34;\n  if (cVar27 == '\x11') {\n    iVar29 = (pbVar22->token).opr.idx;\n    pbVar38->left = pbVar34;\n    if (pbVar34 != (bin_tree_t *)0x0) {\n      pbVar34->parent = pbVar38;\n    }\n    __ptr[iVar29] = __ptr[(pbVar38->token).opr.idx];\n    if (iVar29 < 0x20) {\n      local_b0->used_bkref_map = local_b0->used_bkref_map & ~(1 << ((byte)iVar29 & 0x1f));\n    }\njoined_r0x00028003:\n    if (pbVar34 == (bin_tree_t *)0x0) {\nLAB_00028038:\n      pbVar43 = (bin_tree_t *)0x0;\n      while ((pbVar34 = pbVar38->right, pbVar34 == pbVar43 || (pbVar34 == (bin_tree_t *)0x0))) {\n        ppbVar8 = &pbVar38->parent;\n        pbVar43 = pbVar38;\n        pbVar38 = *ppbVar8;\n        if (*ppbVar8 == (bin_tree_t *)0x0) {\n          if (sVar39 == 0) goto LAB_00028074;\n          sVar33 = *__ptr;\n          if (sVar33 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar27 = (pbVar34->token).field_0x4;\n    pbVar43 = pbVar34->left;\n    pbVar22 = pbVar34;\n  }\n  goto LAB_00028010;\n  while (__ptr[sVar33] == sVar33) {\nLAB_0002806d:\n    sVar33 = sVar33 + 1;\n    if (sVar33 == sVar39) goto LAB_00028074;\n  }\nLAB_0002809c:\n  do {\n    pbVar22 = pbVar16->left;\n    pbVar43 = pbVar16;\n    while (pbVar16 = pbVar22, pbVar16 != (bin_tree_t *)0x0) {\n      pbVar43 = pbVar16;\n      pbVar22 = pbVar16->left;\n    }\n    pbVar16 = pbVar43->right;\n  } while (pbVar16 != (bin_tree_t *)0x0);\n  pbVar22 = (bin_tree_t *)0x0;\n  pbVar16 = (bin_tree_t *)0x0;\n  do {\n    current_token.opr.sbcset = (re_bitset_ptr_t)0x0;\n    if ((pbVar22 == (bin_tree_t *)0x0) || ((pbVar22->token).field_0x4 != '\x11')) {\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar22);\n      pbVar43->left = pbVar16;\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        pbVar16->parent = pbVar43;\n      }\n      pbVar16 = pbVar43->right;\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\njoined_r0x000280c8:\n        if (cVar27 == '\x11') {\n          pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16);\n          pbVar43->right = pbVar16;\n          if (pbVar16 != (bin_tree_t *)0x0) {\n            pbVar16->parent = pbVar43;\n          }\n        }\n      }\n      aVar14 = current_token.opr;\n      if (current_token.opr.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n    }\n    pbVar34 = pbVar43->parent;\n    if (pbVar34 == (bin_tree_t *)0x0) {\n      pbVar16 = local_b0->str_tree;\n      goto LAB_000281a0;\n    }\n    pbVar16 = pbVar34->right;\n    if ((pbVar16 != (bin_tree_t *)0x0) && (pbVar43 != pbVar16)) goto LAB_0002809c;\n    pbVar22 = pbVar34->left;\n    pbVar43 = pbVar34;\n  } while( true );\nLAB_00028074:\n  free(__ptr);\n  local_b0->subexp_map = (Idx *)0x0;\n  pbVar16 = local_b0->str_tree;\n  goto LAB_0002809c;\nLAB_000281a0:\n  do {\n    do {\n      pbVar43 = pbVar16;\n      pbVar16 = pbVar43->left;\n    } while (pbVar43->left != (bin_tree_t *)0x0);\n    pbVar16 = pbVar43->right;\n  } while (pbVar43->right != (bin_tree_t *)0x0);\n  do {\n    if ((pbVar43->token).field_0x4 == '\x10') {\n      IVar21 = pbVar43->left->node_idx;\n      pbVar43->first = pbVar43->left->first;\n      pbVar43->node_idx = IVar21;\nLAB_000281c7:\n      pbVar22 = pbVar43->parent;\n    }\n    else {\n      pbVar43->first = pbVar43;\n      token._4_4_ = in_stack_ffffff48;\n      token.opr.sbcset = in_stack_ffffff44.sbcset;\n      IVar21 = re_dfa_add_node(local_b0,token);\n      pbVar43->node_idx = IVar21;\n      if (IVar21 == -1) goto LAB_00028330;\n      if ((pbVar43->token).field_0x4 != '\f') goto LAB_000281c7;\n      *(re_context_type *)&local_b0->nodes[IVar21].field_0x4 =\n           *(uint *)&local_b0->nodes[IVar21].field_0x4 & 0xfffc00ff |\n           ((pbVar43->token).opr.ctx_type & 0x3ff) << 8;\n      pbVar22 = pbVar43->parent;\n    }\n    if (pbVar22 == (bin_tree_t *)0x0) {\n      pbVar16 = local_b0->str_tree;\n      cVar27 = (pbVar16->token).field_0x4;\n      pbVar43 = pbVar16->left;\n      pbVar22 = pbVar16;\n      if (cVar27 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    pbVar16 = pbVar22->right;\n    bVar47 = pbVar43 == pbVar16;\n    pbVar43 = pbVar22;\n  } while (pbVar16 == (bin_tree_t *)0x0 || bVar47);\n  goto LAB_000281a0;\nLAB_00028250:\n  if (cVar27 == '\x10') {\n    pbVar34 = pbVar22->right;\n    pbVar43->next = pbVar34->first;\n    pbVar34->next = pbVar22->next;\n  }\n  else {\n    if (pbVar43 != (bin_tree_t *)0x0) {\n      pbVar43->next = pbVar22->next;\n    }\n    pbVar34 = pbVar22->right;\n    if (pbVar34 == (bin_tree_t *)0x0) {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar22->parent;\n        while( true ) {\n          pbVar34 = pbVar43;\n          if (pbVar34 == (bin_tree_t *)0x0) goto LAB_00028398;\n          pbVar43 = pbVar34->right;\n          if ((pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22)) break;\n          pbVar43 = pbVar34->parent;\n          pbVar22 = pbVar34;\n        }\n      }\n    }\n    else {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar34;\n      }\n      pbVar34->next = pbVar22->next;\n    }\n  }\n  while( true ) {\n    cVar27 = (pbVar43->token).field_0x4;\n    ppbVar8 = &pbVar43->left;\n    pbVar22 = pbVar43;\n    pbVar43 = *ppbVar8;\n    if (cVar27 != '\v') break;\nLAB_00028283:\n    pbVar43->next = pbVar22;\n  }\n  goto LAB_00028250;\n  while (pbVar22 = pbVar34->parent, pbVar43 = pbVar34, pbVar34->parent != (bin_tree_t *)0x0) {\n    while( true ) {\n      pbVar34 = pbVar22;\n      pbVar16 = pbVar34->right;\n      bVar47 = pbVar16 == pbVar43;\n      if (bVar47 || pbVar16 == (bin_tree_t *)0x0) break;\nLAB_00028398:\n      do {\n        bVar49 = (pbVar16->token).field_0x4;\n        if (bVar49 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))\n                             ();\n          return rVar15;\n        }\n        if ((bVar49 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        local_b0->nexts[pbVar16->node_idx] = pbVar16->next->node_idx;\n        pbVar43 = pbVar16->left;\n        pbVar22 = pbVar16;\n        pbVar16 = pbVar43;\n      } while (pbVar43 != (bin_tree_t *)0x0);\n    }\n  }\n  bVar48 = false;\n  sVar39 = 0;\n  do {\n    sVar33 = sVar39;\n    if (local_b0->nodes_len == sVar39) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      if (local_b0->eclosures[sVar33].nelem != 0) goto code_r0x000284f2;\n      aVar14.idx = calc_eclosure_iter((re_node_set *)&current_token,local_b0,sVar33,true);\n      if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n      sVar39 = sVar33 + 1;\n      if (local_b0->eclosures[sVar33].nelem != 0) break;\n      free(local_78);\n      sVar33 = sVar39;\n      bVar48 = bVar47 || pbVar16 == (bin_tree_t *)0x0;\n      if (local_b0->nodes_len == sVar39) goto LAB_00028505;\n    }\n  } while( true );\ncode_r0x000284f2:\n  sVar39 = sVar33 + 1;\n  sVar33 = sVar39;\n  if (local_b0->nodes_len == sVar39) {\nLAB_000284fa:\n    if (!bVar48) {\n      if (((((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0)) ||\n          ((local_b0->field_0x58 & 1) == 0)) && (local_b0->nbackref == 0)) goto LAB_00028860;\n      prVar19 = (re_node_set *)malloc(sVar39 * 0xc);\n      local_b0->inveclosures = prVar19;\n      if (prVar19 != (re_node_set *)0x0) {\n        uVar40 = 0;\n        if (sVar39 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      err = _REG_ESPACE;\n      local_b0 = preg_00->buffer;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    sVar33 = 0;\n    bVar48 = false;\n  }\n  goto LAB_000284dd;\nLAB_00028330:\n  aVar14.idx = _REG_ESPACE;\nLAB_00028335:\n  local_b0 = preg_00->buffer;\n  err = (reg_errcode_t)aVar14;\nLAB_00027c60:\n  pbVar26 = local_b0->str_tree_storage;\n  while (pbVar26 != (bin_tree_storage_t *)0x0) {\n    pbVar6 = pbVar26->next;\n    free(pbVar26);\n    pbVar26 = pbVar6;\n  }\n  local_b0->str_tree_storage = (bin_tree_storage_t *)0x0;\n  local_b0->str_tree_storage_idx = 0x1f;\n  local_b0->str_tree = (bin_tree_t *)0x0;\n  free(local_b0->org_indices);\n  local_b0->org_indices = (Idx *)0x0;\n  free(regexp.wcs);\n  free(regexp.offsets);\n  if (regexp.mbs_allocated != '\0') {\n    free(regexp.mbs);\n  }\n  goto LAB_000282d8;\nLAB_0002897d:\n  do {\n    uVar30 = uVar40 + uVar28 >> 1;\n    if (iVar32 <= local_78[uVar30]) {\n      if (uVar30 <= uVar28) break;\n      uVar41 = uVar28 + uVar30 >> 1;\n      iVar31 = local_78[uVar41];\n      uVar40 = uVar30;\n      uVar30 = uVar41;\n      while (iVar32 <= iVar31) {\n        if (uVar30 <= uVar28) goto LAB_000289b4;\n        uVar41 = uVar28 + uVar30 >> 1;\n        uVar40 = uVar30;\n        uVar30 = uVar41;\n        iVar31 = local_78[uVar41];\n      }\n    }\n    uVar28 = uVar30 + 1;\n  } while (uVar28 < uVar40);\nLAB_000289b4:\n  if (local_78[uVar28] == iVar32) {\nLAB_00028908:\n    iVar29 = iVar29 + 1;\n    aVar14 = (anon_union_4_5_a39f51ca_for_opr)current_token._4_4_;\n    if ((int)current_token._4_4_ <= iVar29) goto LAB_000289f2;\n    goto LAB_00028917;\n  }\n  rVar15 = re_node_set_merge((re_node_set *)&current_token,dfa->eclosures + iVar32);\n  if (rVar15 != _REG_NOERROR) goto LAB_00028a39;\n  iVar29 = 1;\n  aVar14 = (anon_union_4_5_a39f51ca_for_opr)current_token._4_4_;\n  if ((int)current_token._4_4_ < 2) goto LAB_000289f2;\n  goto LAB_00028917;\nLAB_0002875b:\n  while( true ) {\n    prVar19 = prVar19 + uVar40;\n    prVar19->alloc = 0;\n    prVar19->nelem = 0;\n    prVar19->elems = (Idx *)0x0;\n    uVar30 = local_b0->nodes_len;\n    if (uVar30 <= uVar40 + 1) break;\n    prVar19 = local_b0->inveclosures;\n    uVar40 = uVar40 + 1;\n  }\n  if (uVar30 != 0) {\n    local_9c = 0;\n    local_b0 = (re_dfa_t *)local_b0->eclosures;\n    do {\n      pIVar17 = ((re_node_set *)((int)local_b0 + local_9c * 0xc))->elems;\n      if (0 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem) {\n        iVar29 = 0;\n        do {\n          prVar19 = prVar7->inveclosures + pIVar17[iVar29];\n          iVar32 = prVar19->nelem;\n          pIVar18 = prVar19->elems;\n          if (prVar19->alloc == iVar32) {\n            prVar19->alloc = (iVar32 + 1) * 2;\n            pIVar18 = (Idx *)realloc(pIVar18,(iVar32 + 1) * 8);\n            if (pIVar18 == (Idx *)0x0) goto LAB_00028330;\n            local_b0 = (re_dfa_t *)prVar7->eclosures;\n            iVar32 = prVar19->nelem;\n            prVar19->elems = pIVar18;\n          }\n          iVar29 = iVar29 + 1;\n          prVar19->nelem = iVar32 + 1;\n          pIVar18[iVar32] = local_9c;\n        } while (iVar29 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem);\n        uVar30 = prVar7->nodes_len;\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar30);\n  }\nLAB_00028860:\n  err = _REG_NOERROR;\n  if ((((byte)dfa->field_0x58 >> 2 & uVar28 == 0) != 0) && (preg_00->translate == (uchar *)0x0)) {\n    if (dfa->nodes_len != 0) {\n      if (0xc < (byte)dfa->nodes->field_0x4) {\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +\n                         unaff_EDI + 0xc669))();\n      return rVar15;\n    }\n    dfa->mb_cur_max = 1;\n    dfa->field_0x58 = (0 < dfa->nbackref) * '\x02' | dfa->field_0x58 & 0xf9;\n  }\n  iVar29 = dfa->str_tree->first->node_idx;\n  dfa->init_node = iVar29;\n  prVar19 = dfa->eclosures;\n  aVar14 = (anon_union_4_5_a39f51ca_for_opr)prVar19[iVar29].nelem;\n  if (aVar14.idx < 1) {\n    current_token.opr.sbcset = (re_bitset_ptr_t)0x0;\n    current_token._4_4_ = 0;\n    local_78 = (Idx *)0x0;\n    err_2 = _REG_NOERROR;\nLAB_000289f2:\n    prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,0);\n    dfa->init_state = prVar24;\n    rVar15 = err_2;\n    if (prVar24 != (re_dfastate_t *)0x0) {\n      if ((char)prVar24->field_0x34 < '\0') {\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,1);\n        dfa->init_state_word = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,2);\n        dfa->init_state_nl = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,6);\n        dfa->init_state_begbuf = prVar24;\n        rVar15 = err_2;\n        if (((dfa->init_state_word == (re_dfastate_t *)0x0) ||\n            (dfa->init_state_nl == (re_dfastate_t *)0x0)) || (prVar24 == (re_dfastate_t *)0x0))\n        goto LAB_00028a39;\n      }\n      else {\n        dfa->init_state_begbuf = prVar24;\n        dfa->init_state_nl = prVar24;\n        dfa->init_state_word = prVar24;\n      }\n      free(local_78);\n      rVar15 = _REG_NOERROR;\n    }\n  }\n  else {\n    current_token.opr = aVar14;\n    current_token._4_4_ = aVar14;\n    local_78 = (Idx *)malloc(aVar14.idx * 4);\n    if (local_78 != (Idx *)0x0) {\n      memcpy(local_78,prVar19[iVar29].elems,aVar14.idx * 4);\n      err_2 = _REG_NOERROR;\n      if (0 < dfa->nbackref) {\n        iVar29 = 0;\nLAB_00028917:\n        prVar9 = dfa->nodes + local_78[iVar29];\n        if (prVar9->field_0x4 == '\x04') {\n          pbVar35 = (re_bitset_ptr_t)0x0;\n          do {\n            prVar1 = dfa->nodes + local_78[(int)pbVar35];\n            if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {\n              uVar40 = aVar14.idx - 1;\n              uVar28 = 0;\n              iVar32 = *dfa->edests[local_78[iVar29]].elems;\n              if (uVar40 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1);\n          } while (aVar14.sbcset != pbVar35);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    rVar15 = _REG_ESPACE;\n  }\nLAB_00028a39:\n  prVar7 = preg_00->buffer;\n  pbVar26 = prVar7->str_tree_storage;\n  err = rVar15;\n  while (pbVar26 != (bin_tree_storage_t *)0x0) {\n    pbVar6 = pbVar26->next;\n    free(pbVar26);\n    pbVar26 = pbVar6;\n  }\n  prVar7->str_tree_storage = (bin_tree_storage_t *)0x0;\n  prVar7->str_tree_storage_idx = 0x1f;\n  prVar7->str_tree = (bin_tree_t *)0x0;\n  free(prVar7->org_indices);\n  prVar7->org_indices = (Idx *)0x0;\n  free(regexp.wcs);\n  free(regexp.offsets);\n  if (regexp.mbs_allocated != '\0') {\n    free(regexp.mbs);\n  }\n  rVar15 = err;\n  if (err == _REG_NOERROR) goto LAB_000282f4;\nLAB_000282d8:\n  free_dfa_content(dfa);\n  preg_00->buffer = (re_dfa_t *)0x0;\n  preg_00->allocated = 0;\n  rVar15 = err;\nLAB_000282f4:\n  if (iVar4 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return rVar15;\n}\n\n" (function_definition "reg_errcode_t re_compile_internal(regex_t *preg,char *pattern,size_t length,reg_syntax_t syntax)\n\n{\n  re_token_t *prVar1;\n  undefined1 *puVar2;\n  byte bVar3;\n  int iVar4;\n  uchar *puVar5;\n  bin_tree_storage_t *pbVar6;\n  re_dfa_t *prVar7;\n  re_token_t token;\n  bin_tree_t **ppbVar8;\n  regex_t *preg_00;\n  re_token_t *prVar9;\n  re_state_table_entry *prVar10;\n  size_t sVar11;\n  byte *pbVar12;\n  uchar *puVar13;\n  anon_union_4_5_a39f51ca_for_opr aVar14;\n  reg_errcode_t rVar15;\n  bin_tree_t *pbVar16;\n  Idx *pIVar17;\n  Idx *pIVar18;\n  re_node_set *prVar19;\n  re_node_set *prVar20;\n  size_t *__ptr;\n  Idx IVar21;\n  bin_tree_t *pbVar22;\n  wint_t wVar23;\n  re_dfastate_t *prVar24;\n  __int32_t **pp_Var25;\n  re_dfa_t *dfa;\n  bin_tree_storage_t *pbVar26;\n  char cVar27;\n  uint extraout_ECX;\n  uint uVar28;\n  int iVar29;\n  uint uVar30;\n  int iVar31;\n  int iVar32;\n  size_t sVar33;\n  bin_tree_t *pbVar34;\n  re_bitset_ptr_t pbVar35;\n  uint *puVar36;\n  int iVar37;\n  size_t __size;\n  bin_tree_t *pbVar38;\n  size_t sVar39;\n  uint uVar40;\n  uint uVar41;\n  re_hashval_t rVar42;\n  bin_tree_t *pbVar43;\n  int unaff_EDI;\n  undefined4 *puVar44;\n  byte *pbVar45;\n  uchar **ppuVar46;\n  int in_GS_OFFSET;\n  bool bVar47;\n  bool bVar48;\n  byte bVar49;\n  undefined8 uVar50;\n  reg_syntax_t syntax_00;\n  anon_union_4_5_a39f51ca_for_opr in_stack_ffffff44;\n  reg_errcode_t *in_stack_ffffff48;\n  re_dfa_t *local_b0;\n  uint local_9c;\n  int local_98;\n  int local_94;\n  reg_errcode_t err;\n  reg_errcode_t err_2;\n  re_token_t current_token;\n  Idx *local_78;\n  re_string_t regexp;\n  \n  bVar49 = 0;\n  uVar50 = __x86_get_pc_thunk_di();\n  puVar13 = (uchar *)((ulonglong)uVar50 >> 0x20);\n  preg_00 = (regex_t *)uVar50;\n  dfa = preg_00->buffer;\n  iVar4 = *(int *)(in_GS_OFFSET + 0x14);\n  preg_00->field_0x1c = preg_00->field_0x1c & 0x90;\n  err = _REG_NOERROR;\n  preg_00->syntax = (reg_syntax_t)preg;\n  preg_00->used = 0;\n  preg_00->re_nsub = 0;\n  if (preg_00->allocated < 0x88) {\n    dfa = (re_dfa_t *)realloc(dfa,0x88);\n    if (dfa == (re_dfa_t *)0x0) {\n      rVar15 = _REG_ESPACE;\n      goto LAB_000282f4;\n    }\n    preg_00->allocated = 0x88;\n    preg_00->buffer = dfa;\n  }\n  puVar44 = (undefined4 *)((uint)&dfa->nodes_alloc & 0xfffffffc);\n  preg_00->used = 0x88;\n  dfa->nodes = (re_token_t *)0x0;\n  dfa->subexp_map = (Idx *)0x0;\n  uVar28 = (uint)((int)dfa + (0x88 - (int)puVar44)) >> 2;\n  for (; uVar28 != 0; uVar28 = uVar28 - 1) {\n    *puVar44 = 0;\n    puVar44 = puVar44 + (uint)bVar49 * -2 + 1;\n  }\n  dfa->str_tree_storage_idx = 0x1f;\n  if (extraout_ECX < 0xaaaaaaa) {\n    sVar39 = extraout_ECX + 1;\n    dfa->nodes_alloc = sVar39;\n    prVar9 = (re_token_t *)malloc(sVar39 * 8);\n    dfa->nodes = prVar9;\n    if (extraout_ECX == 0) {\n      rVar42 = 0;\n      uVar28 = 1;\n    }\n    else {\n      uVar28 = 1;\n      do {\n        uVar28 = uVar28 * 2;\n      } while (uVar28 <= extraout_ECX);\n      rVar42 = uVar28 - 1;\n    }\n    prVar10 = (re_state_table_entry *)calloc(0xc,uVar28);\n    dfa->state_hash_mask = rVar42;\n    dfa->state_table = prVar10;\n    sVar11 = __ctype_get_mb_cur_max();\n    dfa->mb_cur_max = sVar11;\n    pbVar12 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar12 & 0xdf) == 0x55) && ((pbVar12[1] & 0xdf) == 0x54)) &&\n       ((pbVar12[2] & 0xdf) == 0x46)) {\n      bVar47 = pbVar12[3] < 0x2d;\n      bVar48 = pbVar12[3] == 0x2d;\n      iVar29 = 2;\n      pbVar12 = pbVar12 + bVar48 + 3;\n      pbVar45 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar29 == 0) break;\n        iVar29 = iVar29 + -1;\n        bVar47 = *pbVar12 < *pbVar45;\n        bVar48 = *pbVar12 == *pbVar45;\n        pbVar12 = pbVar12 + (uint)bVar49 * -2 + 1;\n        pbVar45 = pbVar45 + (uint)bVar49 * -2 + 1;\n      } while (bVar48);\n      if ((!bVar47 && !bVar48) == bVar47) {\n        dfa->field_0x58 = dfa->field_0x58 | 4;\n      }\n    }\n    bVar3 = dfa->field_0x58;\n    dfa->field_0x58 = bVar3 & 0xf7;\n    if (1 < dfa->mb_cur_max) {\n      if ((bVar3 & 4) == 0) {\n        pbVar35 = (re_bitset_ptr_t)calloc(0x20,1);\n        dfa->sb_char = pbVar35;\n        if (pbVar35 == (re_bitset_ptr_t)0x0) goto LAB_000282d0;\n        iVar29 = 0;\n        do {\n          uVar28 = iVar29 * 8;\n          iVar32 = 0;\n          do {\n            while( true ) {\n              wVar23 = btowc(uVar28);\n              if (wVar23 != 0xffffffff) break;\n              if ((uVar28 & 0xffffff80) == 0) {\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }\nLAB_00028404:\n              iVar32 = iVar32 + 1;\n              uVar28 = uVar28 + 1;\n              if (iVar32 == 0x20) goto LAB_00028460;\n            }\n            puVar36 = (uint *)((int)dfa->sb_char + iVar29);\n            *puVar36 = *puVar36 | 1 << ((byte)iVar32 & 0x1f);\n            if ((uVar28 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar23 != uVar28) goto LAB_000283fc;\n            iVar32 = iVar32 + 1;\n            uVar28 = uVar28 + 1;\n          } while (iVar32 != 0x20);\nLAB_00028460:\n          iVar29 = iVar29 + 4;\n        } while (iVar29 != 0x20);\n      }\n      else {\n        dfa->sb_char = (re_bitset_ptr_t)(unaff_EDI + 0x58c9);\n      }\n    }\n    if ((dfa->nodes != (re_token_t *)0x0) && (dfa->state_table != (re_state_table_entry *)0x0)) {\n      err = _REG_NOERROR;\n      puVar5 = preg_00->translate;\n      ppuVar46 = &regexp.mbs;\n      for (iVar29 = 0x13; iVar29 != 0; iVar29 = iVar29 + -1) {\n        *ppuVar46 = (uchar *)0x0;\n        ppuVar46 = ppuVar46 + (uint)bVar49 * -2 + 1;\n      }\n      uVar28 = (uint)preg & 0x400000;\n      regexp.icase = uVar28 != 0;\n      regexp.mbs_allocated = puVar5 != (uchar *)0x0 || uVar28 != 0;\n      iVar29 = dfa->mb_cur_max;\n      regexp.map_notascii = (byte)dfa->field_0x58 >> 3 & 1;\n      regexp.is_utf8 = (byte)dfa->field_0x58 >> 2 & 1;\n      regexp.raw_mbs = puVar13;\n      regexp.len = extraout_ECX;\n      regexp.trans = puVar5;\n      regexp.mb_cur_max = iVar29;\n      if (extraout_ECX != 0) {\n        aVar14.idx = re_string_realloc_buffers(&regexp,sVar39);\n        if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n        iVar29 = dfa->mb_cur_max;\n      }\n      if (regexp.mbs_allocated != '\0') {\n        puVar13 = regexp.mbs;\n      }\n      regexp.mbs = puVar13;\n      if (uVar28 == 0) {\n        if (iVar29 < 2) {\n          iVar29 = regexp.bufs_len;\n          regexp.valid_raw_len = regexp.bufs_len;\n          if (puVar5 != (uchar *)0x0) {\n            if (regexp.len <= regexp.bufs_len) {\n              regexp.bufs_len = regexp.len;\n            }\n            iVar29 = regexp.valid_len;\n            regexp.valid_raw_len = regexp.valid_len;\n            if (regexp.valid_len < regexp.bufs_len) {\n              puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n              iVar32 = regexp.valid_len + 1;\n              iVar29 = regexp.bufs_len;\n              regexp.valid_raw_len = regexp.bufs_len;\n              if (iVar32 < regexp.bufs_len) {\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }\n            }\n          }\n        }\n        else {\n          build_wcs_buffer(&regexp);\n          iVar29 = regexp.valid_len;\n        }\n      }\n      else {\n        if (1 < iVar29) {\n          do {\n            aVar14.idx = build_wcs_upper_buffer(&regexp);\n            if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n            iVar29 = regexp.valid_len;\n            if (((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;\n            rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2);\n          } while (rVar15 == _REG_NOERROR);\n          local_b0 = preg_00->buffer;\n          err = rVar15;\n          goto LAB_00027c60;\n        }\n        local_b0 = (re_dfa_t *)regexp.len;\n        if (regexp.bufs_len <= regexp.len) {\n          local_b0 = (re_dfa_t *)regexp.bufs_len;\n        }\n        if (regexp.valid_len < (int)local_b0) {\n          pp_Var25 = __ctype_toupper_loc();\n          while( true ) {\n            if (regexp.trans == (uchar *)0x0) {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n            }\n            else {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }\n            if (local_b0 == (re_dfa_t *)(regexp.valid_len + 1)) break;\n            regexp.valid_len = regexp.valid_len + 1;\n            puVar13 = regexp.mbs;\n          }\n        }\n        else {\n          local_b0 = (re_dfa_t *)regexp.valid_len;\n        }\n        regexp.valid_raw_len = (Idx)local_b0;\n        iVar29 = regexp.valid_raw_len;\n      }\nLAB_00027d86:\n      regexp.valid_len = iVar29;\n      err = _REG_NOERROR;\n      prVar7 = preg_00->buffer;\n      preg_00->re_nsub = 0;\n      prVar7->syntax = (reg_syntax_t)preg;\n      syntax_00 = 0x27db7;\n      iVar29 = peek_token(&current_token,&regexp,(uint)preg | 0x800000);\n      regexp.cur_idx = regexp.cur_idx + iVar29;\n      pbVar16 = parse_reg_exp((re_string_t *)preg,(regex_t *)0x0,(re_token_t *)&err,syntax_00,\n                              in_stack_ffffff44.idx,in_stack_ffffff48);\n      if ((err != _REG_NOERROR) && (pbVar16 == (bin_tree_t *)0x0)) {\n        dfa->str_tree = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        goto LAB_00027c60;\n      }\n      iVar29 = prVar7->str_tree_storage_idx;\n      if (iVar29 == 0x1f) {\n        pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n        if (pbVar26 != (bin_tree_storage_t *)0x0) {\n          iVar32 = 1;\n          iVar37 = 4;\n          iVar31 = 0x18;\n          pbVar26->next = prVar7->str_tree_storage;\n          iVar29 = 0;\n          prVar7->str_tree_storage = pbVar26;\n          goto LAB_00027e0d;\n        }\n        local_b0 = preg_00->buffer;\n        if (pbVar16 != (bin_tree_t *)0x0) {\n          pbVar43 = (bin_tree_t *)0x0;\n          bVar47 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        pbVar26 = prVar7->str_tree_storage;\n        iVar32 = iVar29 + 1;\n        iVar31 = iVar29 * 0x20 + 0x18;\n        iVar37 = iVar29 * 0x20 + 4;\nLAB_00027e0d:\n        prVar7->str_tree_storage_idx = iVar32;\n        pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].left = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].right = (bin_tree_t *)0x0;\n        *(undefined1 *)((int)&pbVar26->data[0].parent + iVar31) = 2;\n        puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n        *puVar2 = *puVar2 & 0xf3;\n        pbVar43 = (bin_tree_t *)((int)pbVar26->data + iVar37 + -4);\n        bVar47 = pbVar43 == (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].node_idx = -1;\n        pbVar22 = pbVar43;\n        if (pbVar16 != (bin_tree_t *)0x0) {\nLAB_00027e67:\n          iVar29 = prVar7->str_tree_storage_idx;\n          if (iVar29 == 0x1f) {\n            pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n            if (pbVar26 == (bin_tree_storage_t *)0x0) goto LAB_00028d28;\n            iVar32 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            pbVar26->next = prVar7->str_tree_storage;\n            iVar29 = 0;\n            prVar7->str_tree_storage = pbVar26;\n          }\n          else {\n            iVar32 = iVar29 + 1;\n            local_98 = iVar29 * 0x20 + 4;\n            local_94 = iVar29 * 0x20 + 0x18;\n            pbVar26 = prVar7->str_tree_storage;\n          }\n          prVar7->str_tree_storage_idx = iVar32;\n          pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n          pbVar22 = (bin_tree_t *)((int)pbVar26->data + local_98 + -4);\n          pbVar26->data[iVar29].left = pbVar16;\n          pbVar26->data[iVar29].right = pbVar43;\n          *(undefined1 *)((int)&pbVar26->data[0].parent + local_94) = 0x10;\n          puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n          *puVar2 = *puVar2 & 0xf3;\n          pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].node_idx = -1;\n          bVar47 = (bool)(bVar47 | pbVar22 == (bin_tree_t *)0x0);\n          pbVar16->parent = pbVar22;\n          if (pbVar43 != (bin_tree_t *)0x0) {\n            pbVar43->parent = pbVar22;\n          }\n        }\n        prVar7 = local_b0;\n        if (!bVar47) {\n          dfa->str_tree = pbVar22;\n          sVar11 = local_b0->nodes_alloc * 4;\n          __size = local_b0->nodes_alloc * 0xc;\n          pIVar17 = (Idx *)malloc(sVar11);\n          local_b0->nexts = pIVar17;\n          pIVar18 = (Idx *)malloc(sVar11);\n          local_b0->org_indices = pIVar18;\n          prVar19 = (re_node_set *)malloc(__size);\n          local_b0->edests = prVar19;\n          prVar20 = (re_node_set *)malloc(__size);\n          local_b0->eclosures = prVar20;\n          if ((((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0)) && (prVar20 != (re_node_set *)0x0)) {\n            sVar39 = preg_00->re_nsub;\n            __ptr = (size_t *)malloc(sVar39 * 4);\n            local_b0->subexp_map = (Idx *)__ptr;\n            pbVar16 = local_b0->str_tree;\n            if (__ptr != (size_t *)0x0) {\n              sVar33 = 0;\n              if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }\n              cVar27 = (pbVar16->token).field_0x4;\n              pbVar43 = pbVar16->left;\n              pbVar22 = pbVar16;\nLAB_00028010:\n              pbVar38 = pbVar22;\n              pbVar22 = pbVar43;\n              pbVar34 = pbVar22;\n              if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar27 != '\x11') goto joined_r0x00028003;\n              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          err = _REG_ESPACE;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      err = _REG_ESPACE;\n      dfa->str_tree = (bin_tree_t *)0x0;\n      goto LAB_00027c60;\n    }\n  }\nLAB_000282d0:\n  err = _REG_ESPACE;\n  goto LAB_000282d8;\ncode_r0x00028148:\n  cVar27 = (pbVar22->token).field_0x4;\n  pbVar34 = pbVar22->left;\n  pbVar43 = pbVar34;\n  if (cVar27 == '\x11') {\n    iVar29 = (pbVar22->token).opr.idx;\n    pbVar38->left = pbVar34;\n    if (pbVar34 != (bin_tree_t *)0x0) {\n      pbVar34->parent = pbVar38;\n    }\n    __ptr[iVar29] = __ptr[(pbVar38->token).opr.idx];\n    if (iVar29 < 0x20) {\n      local_b0->used_bkref_map = local_b0->used_bkref_map & ~(1 << ((byte)iVar29 & 0x1f));\n    }\njoined_r0x00028003:\n    if (pbVar34 == (bin_tree_t *)0x0) {\nLAB_00028038:\n      pbVar43 = (bin_tree_t *)0x0;\n      while ((pbVar34 = pbVar38->right, pbVar34 == pbVar43 || (pbVar34 == (bin_tree_t *)0x0))) {\n        ppbVar8 = &pbVar38->parent;\n        pbVar43 = pbVar38;\n        pbVar38 = *ppbVar8;\n        if (*ppbVar8 == (bin_tree_t *)0x0) {\n          if (sVar39 == 0) goto LAB_00028074;\n          sVar33 = *__ptr;\n          if (sVar33 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar27 = (pbVar34->token).field_0x4;\n    pbVar43 = pbVar34->left;\n    pbVar22 = pbVar34;\n  }\n  goto LAB_00028010;\n  while (__ptr[sVar33] == sVar33) {\nLAB_0002806d:\n    sVar33 = sVar33 + 1;\n    if (sVar33 == sVar39) goto LAB_00028074;\n  }\nLAB_0002809c:\n  do {\n    pbVar22 = pbVar16->left;\n    pbVar43 = pbVar16;\n    while (pbVar16 = pbVar22, pbVar16 != (bin_tree_t *)0x0) {\n      pbVar43 = pbVar16;\n      pbVar22 = pbVar16->left;\n    }\n    pbVar16 = pbVar43->right;\n  } while (pbVar16 != (bin_tree_t *)0x0);\n  pbVar22 = (bin_tree_t *)0x0;\n  pbVar16 = (bin_tree_t *)0x0;\n  do {\n    current_token.opr.sbcset = (re_bitset_ptr_t)0x0;\n    if ((pbVar22 == (bin_tree_t *)0x0) || ((pbVar22->token).field_0x4 != '\x11')) {\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar22);\n      pbVar43->left = pbVar16;\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        pbVar16->parent = pbVar43;\n      }\n      pbVar16 = pbVar43->right;\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\njoined_r0x000280c8:\n        if (cVar27 == '\x11') {\n          pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16);\n          pbVar43->right = pbVar16;\n          if (pbVar16 != (bin_tree_t *)0x0) {\n            pbVar16->parent = pbVar43;\n          }\n        }\n      }\n      aVar14 = current_token.opr;\n      if (current_token.opr.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n    }\n    pbVar34 = pbVar43->parent;\n    if (pbVar34 == (bin_tree_t *)0x0) {\n      pbVar16 = local_b0->str_tree;\n      goto LAB_000281a0;\n    }\n    pbVar16 = pbVar34->right;\n    if ((pbVar16 != (bin_tree_t *)0x0) && (pbVar43 != pbVar16)) goto LAB_0002809c;\n    pbVar22 = pbVar34->left;\n    pbVar43 = pbVar34;\n  } while( true );\nLAB_00028074:\n  free(__ptr);\n  local_b0->subexp_map = (Idx *)0x0;\n  pbVar16 = local_b0->str_tree;\n  goto LAB_0002809c;\nLAB_000281a0:\n  do {\n    do {\n      pbVar43 = pbVar16;\n      pbVar16 = pbVar43->left;\n    } while (pbVar43->left != (bin_tree_t *)0x0);\n    pbVar16 = pbVar43->right;\n  } while (pbVar43->right != (bin_tree_t *)0x0);\n  do {\n    if ((pbVar43->token).field_0x4 == '\x10') {\n      IVar21 = pbVar43->left->node_idx;\n      pbVar43->first = pbVar43->left->first;\n      pbVar43->node_idx = IVar21;\nLAB_000281c7:\n      pbVar22 = pbVar43->parent;\n    }\n    else {\n      pbVar43->first = pbVar43;\n      token._4_4_ = in_stack_ffffff48;\n      token.opr.sbcset = in_stack_ffffff44.sbcset;\n      IVar21 = re_dfa_add_node(local_b0,token);\n      pbVar43->node_idx = IVar21;\n      if (IVar21 == -1) goto LAB_00028330;\n      if ((pbVar43->token).field_0x4 != '\f') goto LAB_000281c7;\n      *(re_context_type *)&local_b0->nodes[IVar21].field_0x4 =\n           *(uint *)&local_b0->nodes[IVar21].field_0x4 & 0xfffc00ff |\n           ((pbVar43->token).opr.ctx_type & 0x3ff) << 8;\n      pbVar22 = pbVar43->parent;\n    }\n    if (pbVar22 == (bin_tree_t *)0x0) {\n      pbVar16 = local_b0->str_tree;\n      cVar27 = (pbVar16->token).field_0x4;\n      pbVar43 = pbVar16->left;\n      pbVar22 = pbVar16;\n      if (cVar27 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    pbVar16 = pbVar22->right;\n    bVar47 = pbVar43 == pbVar16;\n    pbVar43 = pbVar22;\n  } while (pbVar16 == (bin_tree_t *)0x0 || bVar47);\n  goto LAB_000281a0;\nLAB_00028250:\n  if (cVar27 == '\x10') {\n    pbVar34 = pbVar22->right;\n    pbVar43->next = pbVar34->first;\n    pbVar34->next = pbVar22->next;\n  }\n  else {\n    if (pbVar43 != (bin_tree_t *)0x0) {\n      pbVar43->next = pbVar22->next;\n    }\n    pbVar34 = pbVar22->right;\n    if (pbVar34 == (bin_tree_t *)0x0) {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar22->parent;\n        while( true ) {\n          pbVar34 = pbVar43;\n          if (pbVar34 == (bin_tree_t *)0x0) goto LAB_00028398;\n          pbVar43 = pbVar34->right;\n          if ((pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22)) break;\n          pbVar43 = pbVar34->parent;\n          pbVar22 = pbVar34;\n        }\n      }\n    }\n    else {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar34;\n      }\n      pbVar34->next = pbVar22->next;\n    }\n  }\n  while( true ) {\n    cVar27 = (pbVar43->token).field_0x4;\n    ppbVar8 = &pbVar43->left;\n    pbVar22 = pbVar43;\n    pbVar43 = *ppbVar8;\n    if (cVar27 != '\v') break;\nLAB_00028283:\n    pbVar43->next = pbVar22;\n  }\n  goto LAB_00028250;\n  while (pbVar22 = pbVar34->parent, pbVar43 = pbVar34, pbVar34->parent != (bin_tree_t *)0x0) {\n    while( true ) {\n      pbVar34 = pbVar22;\n      pbVar16 = pbVar34->right;\n      bVar47 = pbVar16 == pbVar43;\n      if (bVar47 || pbVar16 == (bin_tree_t *)0x0) break;\nLAB_00028398:\n      do {\n        bVar49 = (pbVar16->token).field_0x4;\n        if (bVar49 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))\n                             ();\n          return rVar15;\n        }\n        if ((bVar49 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        local_b0->nexts[pbVar16->node_idx] = pbVar16->next->node_idx;\n        pbVar43 = pbVar16->left;\n        pbVar22 = pbVar16;\n        pbVar16 = pbVar43;\n      } while (pbVar43 != (bin_tree_t *)0x0);\n    }\n  }\n  bVar48 = false;\n  sVar39 = 0;\n  do {\n    sVar33 = sVar39;\n    if (local_b0->nodes_len == sVar39) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      if (local_b0->eclosures[sVar33].nelem != 0) goto code_r0x000284f2;\n      aVar14.idx = calc_eclosure_iter((re_node_set *)&current_token,local_b0,sVar33,true);\n      if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n      sVar39 = sVar33 + 1;\n      if (local_b0->eclosures[sVar33].nelem != 0) break;\n      free(local_78);\n      sVar33 = sVar39;\n      bVar48 = bVar47 || pbVar16 == (bin_tree_t *)0x0;\n      if (local_b0->nodes_len == sVar39) goto LAB_00028505;\n    }\n  } while( true );\ncode_r0x000284f2:\n  sVar39 = sVar33 + 1;\n  sVar33 = sVar39;\n  if (local_b0->nodes_len == sVar39) {\nLAB_000284fa:\n    if (!bVar48) {\n      if (((((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0)) ||\n          ((local_b0->field_0x58 & 1) == 0)) && (local_b0->nbackref == 0)) goto LAB_00028860;\n      prVar19 = (re_node_set *)malloc(sVar39 * 0xc);\n      local_b0->inveclosures = prVar19;\n      if (prVar19 != (re_node_set *)0x0) {\n        uVar40 = 0;\n        if (sVar39 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      err = _REG_ESPACE;\n      local_b0 = preg_00->buffer;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    sVar33 = 0;\n    bVar48 = false;\n  }\n  goto LAB_000284dd;\nLAB_00028330:\n  aVar14.idx = _REG_ESPACE;\nLAB_00028335:\n  local_b0 = preg_00->buffer;\n  err = (reg_errcode_t)aVar14;\nLAB_00027c60:\n  pbVar26 = local_b0->str_tree_storage;\n  while (pbVar26 != (bin_tree_storage_t *)0x0) {\n    pbVar6 = pbVar26->next;\n    free(pbVar26);\n    pbVar26 = pbVar6;\n  }\n  local_b0->str_tree_storage = (bin_tree_storage_t *)0x0;\n  local_b0->str_tree_storage_idx = 0x1f;\n  local_b0->str_tree = (bin_tree_t *)0x0;\n  free(local_b0->org_indices);\n  local_b0->org_indices = (Idx *)0x0;\n  free(regexp.wcs);\n  free(regexp.offsets);\n  if (regexp.mbs_allocated != '\0') {\n    free(regexp.mbs);\n  }\n  goto LAB_000282d8;\nLAB_0002897d:\n  do {\n    uVar30 = uVar40 + uVar28 >> 1;\n    if (iVar32 <= local_78[uVar30]) {\n      if (uVar30 <= uVar28) break;\n      uVar41 = uVar28 + uVar30 >> 1;\n      iVar31 = local_78[uVar41];\n      uVar40 = uVar30;\n      uVar30 = uVar41;\n      while (iVar32 <= iVar31) {\n        if (uVar30 <= uVar28) goto LAB_000289b4;\n        uVar41 = uVar28 + uVar30 >> 1;\n        uVar40 = uVar30;\n        uVar30 = uVar41;\n        iVar31 = local_78[uVar41];\n      }\n    }\n    uVar28 = uVar30 + 1;\n  } while (uVar28 < uVar40);\nLAB_000289b4:\n  if (local_78[uVar28] == iVar32) {\nLAB_00028908:\n    iVar29 = iVar29 + 1;\n    aVar14 = (anon_union_4_5_a39f51ca_for_opr)current_token._4_4_;\n    if ((int)current_token._4_4_ <= iVar29) goto LAB_000289f2;\n    goto LAB_00028917;\n  }\n  rVar15 = re_node_set_merge((re_node_set *)&current_token,dfa->eclosures + iVar32);\n  if (rVar15 != _REG_NOERROR) goto LAB_00028a39;\n  iVar29 = 1;\n  aVar14 = (anon_union_4_5_a39f51ca_for_opr)current_token._4_4_;\n  if ((int)current_token._4_4_ < 2) goto LAB_000289f2;\n  goto LAB_00028917;\nLAB_0002875b:\n  while( true ) {\n    prVar19 = prVar19 + uVar40;\n    prVar19->alloc = 0;\n    prVar19->nelem = 0;\n    prVar19->elems = (Idx *)0x0;\n    uVar30 = local_b0->nodes_len;\n    if (uVar30 <= uVar40 + 1) break;\n    prVar19 = local_b0->inveclosures;\n    uVar40 = uVar40 + 1;\n  }\n  if (uVar30 != 0) {\n    local_9c = 0;\n    local_b0 = (re_dfa_t *)local_b0->eclosures;\n    do {\n      pIVar17 = ((re_node_set *)((int)local_b0 + local_9c * 0xc))->elems;\n      if (0 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem) {\n        iVar29 = 0;\n        do {\n          prVar19 = prVar7->inveclosures + pIVar17[iVar29];\n          iVar32 = prVar19->nelem;\n          pIVar18 = prVar19->elems;\n          if (prVar19->alloc == iVar32) {\n            prVar19->alloc = (iVar32 + 1) * 2;\n            pIVar18 = (Idx *)realloc(pIVar18,(iVar32 + 1) * 8);\n            if (pIVar18 == (Idx *)0x0) goto LAB_00028330;\n            local_b0 = (re_dfa_t *)prVar7->eclosures;\n            iVar32 = prVar19->nelem;\n            prVar19->elems = pIVar18;\n          }\n          iVar29 = iVar29 + 1;\n          prVar19->nelem = iVar32 + 1;\n          pIVar18[iVar32] = local_9c;\n        } while (iVar29 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem);\n        uVar30 = prVar7->nodes_len;\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar30);\n  }\nLAB_00028860:\n  err = _REG_NOERROR;\n  if ((((byte)dfa->field_0x58 >> 2 & uVar28 == 0) != 0) && (preg_00->translate == (uchar *)0x0)) {\n    if (dfa->nodes_len != 0) {\n      if (0xc < (byte)dfa->nodes->field_0x4) {\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +\n                         unaff_EDI + 0xc669))();\n      return rVar15;\n    }\n    dfa->mb_cur_max = 1;\n    dfa->field_0x58 = (0 < dfa->nbackref) * '\x02' | dfa->field_0x58 & 0xf9;\n  }\n  iVar29 = dfa->str_tree->first->node_idx;\n  dfa->init_node = iVar29;\n  prVar19 = dfa->eclosures;\n  aVar14 = (anon_union_4_5_a39f51ca_for_opr)prVar19[iVar29].nelem;\n  if (aVar14.idx < 1) {\n    current_token.opr.sbcset = (re_bitset_ptr_t)0x0;\n    current_token._4_4_ = 0;\n    local_78 = (Idx *)0x0;\n    err_2 = _REG_NOERROR;\nLAB_000289f2:\n    prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,0);\n    dfa->init_state = prVar24;\n    rVar15 = err_2;\n    if (prVar24 != (re_dfastate_t *)0x0) {\n      if ((char)prVar24->field_0x34 < '\0') {\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,1);\n        dfa->init_state_word = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,2);\n        dfa->init_state_nl = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,6);\n        dfa->init_state_begbuf = prVar24;\n        rVar15 = err_2;\n        if (((dfa->init_state_word == (re_dfastate_t *)0x0) ||\n            (dfa->init_state_nl == (re_dfastate_t *)0x0)) || (prVar24 == (re_dfastate_t *)0x0))\n        goto LAB_00028a39;\n      }\n      else {\n        dfa->init_state_begbuf = prVar24;\n        dfa->init_state_nl = prVar24;\n        dfa->init_state_word = prVar24;\n      }\n      free(local_78);\n      rVar15 = _REG_NOERROR;\n    }\n  }\n  else {\n    current_token.opr = aVar14;\n    current_token._4_4_ = aVar14;\n    local_78 = (Idx *)malloc(aVar14.idx * 4);\n    if (local_78 != (Idx *)0x0) {\n      memcpy(local_78,prVar19[iVar29].elems,aVar14.idx * 4);\n      err_2 = _REG_NOERROR;\n      if (0 < dfa->nbackref) {\n        iVar29 = 0;\nLAB_00028917:\n        prVar9 = dfa->nodes + local_78[iVar29];\n        if (prVar9->field_0x4 == '\x04') {\n          pbVar35 = (re_bitset_ptr_t)0x0;\n          do {\n            prVar1 = dfa->nodes + local_78[(int)pbVar35];\n            if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {\n              uVar40 = aVar14.idx - 1;\n              uVar28 = 0;\n              iVar32 = *dfa->edests[local_78[iVar29]].elems;\n              if (uVar40 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1);\n          } while (aVar14.sbcset != pbVar35);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    rVar15 = _REG_ESPACE;\n  }\nLAB_00028a39:\n  prVar7 = preg_00->buffer;\n  pbVar26 = prVar7->str_tree_storage;\n  err = rVar15;\n  while (pbVar26 != (bin_tree_storage_t *)0x0) {\n    pbVar6 = pbVar26->next;\n    free(pbVar26);\n    pbVar26 = pbVar6;\n  }\n  prVar7->str_tree_storage = (bin_tree_storage_t *)0x0;\n  prVar7->str_tree_storage_idx = 0x1f;\n  prVar7->str_tree = (bin_tree_t *)0x0;\n  free(prVar7->org_indices);\n  prVar7->org_indices = (Idx *)0x0;\n  free(regexp.wcs);\n  free(regexp.offsets);\n  if (regexp.mbs_allocated != '\0') {\n    free(regexp.mbs);\n  }\n  rVar15 = err;\n  if (err == _REG_NOERROR) goto LAB_000282f4;\nLAB_000282d8:\n  free_dfa_content(dfa);\n  preg_00->buffer = (re_dfa_t *)0x0;\n  preg_00->allocated = 0;\n  rVar15 = err;\nLAB_000282f4:\n  if (iVar4 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return rVar15;\n}" type_identifier (function_declarator "re_compile_internal(regex_t *preg,char *pattern,size_t length,reg_syntax_t syntax)" identifier (parameter_list "(regex_t *preg,char *pattern,size_t length,reg_syntax_t syntax)" ( (parameter_declaration "regex_t *preg" type_identifier (pointer_declarator "*preg" * identifier)) , (parameter_declaration "char *pattern" primitive_type (pointer_declarator "*pattern" * identifier)) , (parameter_declaration "size_t length" primitive_type identifier) , (parameter_declaration "reg_syntax_t syntax" type_identifier identifier) ))) (compound_statement "{\n  re_token_t *prVar1;\n  undefined1 *puVar2;\n  byte bVar3;\n  int iVar4;\n  uchar *puVar5;\n  bin_tree_storage_t *pbVar6;\n  re_dfa_t *prVar7;\n  re_token_t token;\n  bin_tree_t **ppbVar8;\n  regex_t *preg_00;\n  re_token_t *prVar9;\n  re_state_table_entry *prVar10;\n  size_t sVar11;\n  byte *pbVar12;\n  uchar *puVar13;\n  anon_union_4_5_a39f51ca_for_opr aVar14;\n  reg_errcode_t rVar15;\n  bin_tree_t *pbVar16;\n  Idx *pIVar17;\n  Idx *pIVar18;\n  re_node_set *prVar19;\n  re_node_set *prVar20;\n  size_t *__ptr;\n  Idx IVar21;\n  bin_tree_t *pbVar22;\n  wint_t wVar23;\n  re_dfastate_t *prVar24;\n  __int32_t **pp_Var25;\n  re_dfa_t *dfa;\n  bin_tree_storage_t *pbVar26;\n  char cVar27;\n  uint extraout_ECX;\n  uint uVar28;\n  int iVar29;\n  uint uVar30;\n  int iVar31;\n  int iVar32;\n  size_t sVar33;\n  bin_tree_t *pbVar34;\n  re_bitset_ptr_t pbVar35;\n  uint *puVar36;\n  int iVar37;\n  size_t __size;\n  bin_tree_t *pbVar38;\n  size_t sVar39;\n  uint uVar40;\n  uint uVar41;\n  re_hashval_t rVar42;\n  bin_tree_t *pbVar43;\n  int unaff_EDI;\n  undefined4 *puVar44;\n  byte *pbVar45;\n  uchar **ppuVar46;\n  int in_GS_OFFSET;\n  bool bVar47;\n  bool bVar48;\n  byte bVar49;\n  undefined8 uVar50;\n  reg_syntax_t syntax_00;\n  anon_union_4_5_a39f51ca_for_opr in_stack_ffffff44;\n  reg_errcode_t *in_stack_ffffff48;\n  re_dfa_t *local_b0;\n  uint local_9c;\n  int local_98;\n  int local_94;\n  reg_errcode_t err;\n  reg_errcode_t err_2;\n  re_token_t current_token;\n  Idx *local_78;\n  re_string_t regexp;\n  \n  bVar49 = 0;\n  uVar50 = __x86_get_pc_thunk_di();\n  puVar13 = (uchar *)((ulonglong)uVar50 >> 0x20);\n  preg_00 = (regex_t *)uVar50;\n  dfa = preg_00->buffer;\n  iVar4 = *(int *)(in_GS_OFFSET + 0x14);\n  preg_00->field_0x1c = preg_00->field_0x1c & 0x90;\n  err = _REG_NOERROR;\n  preg_00->syntax = (reg_syntax_t)preg;\n  preg_00->used = 0;\n  preg_00->re_nsub = 0;\n  if (preg_00->allocated < 0x88) {\n    dfa = (re_dfa_t *)realloc(dfa,0x88);\n    if (dfa == (re_dfa_t *)0x0) {\n      rVar15 = _REG_ESPACE;\n      goto LAB_000282f4;\n    }\n    preg_00->allocated = 0x88;\n    preg_00->buffer = dfa;\n  }\n  puVar44 = (undefined4 *)((uint)&dfa->nodes_alloc & 0xfffffffc);\n  preg_00->used = 0x88;\n  dfa->nodes = (re_token_t *)0x0;\n  dfa->subexp_map = (Idx *)0x0;\n  uVar28 = (uint)((int)dfa + (0x88 - (int)puVar44)) >> 2;\n  for (; uVar28 != 0; uVar28 = uVar28 - 1) {\n    *puVar44 = 0;\n    puVar44 = puVar44 + (uint)bVar49 * -2 + 1;\n  }\n  dfa->str_tree_storage_idx = 0x1f;\n  if (extraout_ECX < 0xaaaaaaa) {\n    sVar39 = extraout_ECX + 1;\n    dfa->nodes_alloc = sVar39;\n    prVar9 = (re_token_t *)malloc(sVar39 * 8);\n    dfa->nodes = prVar9;\n    if (extraout_ECX == 0) {\n      rVar42 = 0;\n      uVar28 = 1;\n    }\n    else {\n      uVar28 = 1;\n      do {\n        uVar28 = uVar28 * 2;\n      } while (uVar28 <= extraout_ECX);\n      rVar42 = uVar28 - 1;\n    }\n    prVar10 = (re_state_table_entry *)calloc(0xc,uVar28);\n    dfa->state_hash_mask = rVar42;\n    dfa->state_table = prVar10;\n    sVar11 = __ctype_get_mb_cur_max();\n    dfa->mb_cur_max = sVar11;\n    pbVar12 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar12 & 0xdf) == 0x55) && ((pbVar12[1] & 0xdf) == 0x54)) &&\n       ((pbVar12[2] & 0xdf) == 0x46)) {\n      bVar47 = pbVar12[3] < 0x2d;\n      bVar48 = pbVar12[3] == 0x2d;\n      iVar29 = 2;\n      pbVar12 = pbVar12 + bVar48 + 3;\n      pbVar45 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar29 == 0) break;\n        iVar29 = iVar29 + -1;\n        bVar47 = *pbVar12 < *pbVar45;\n        bVar48 = *pbVar12 == *pbVar45;\n        pbVar12 = pbVar12 + (uint)bVar49 * -2 + 1;\n        pbVar45 = pbVar45 + (uint)bVar49 * -2 + 1;\n      } while (bVar48);\n      if ((!bVar47 && !bVar48) == bVar47) {\n        dfa->field_0x58 = dfa->field_0x58 | 4;\n      }\n    }\n    bVar3 = dfa->field_0x58;\n    dfa->field_0x58 = bVar3 & 0xf7;\n    if (1 < dfa->mb_cur_max) {\n      if ((bVar3 & 4) == 0) {\n        pbVar35 = (re_bitset_ptr_t)calloc(0x20,1);\n        dfa->sb_char = pbVar35;\n        if (pbVar35 == (re_bitset_ptr_t)0x0) goto LAB_000282d0;\n        iVar29 = 0;\n        do {\n          uVar28 = iVar29 * 8;\n          iVar32 = 0;\n          do {\n            while( true ) {\n              wVar23 = btowc(uVar28);\n              if (wVar23 != 0xffffffff) break;\n              if ((uVar28 & 0xffffff80) == 0) {\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }\nLAB_00028404:\n              iVar32 = iVar32 + 1;\n              uVar28 = uVar28 + 1;\n              if (iVar32 == 0x20) goto LAB_00028460;\n            }\n            puVar36 = (uint *)((int)dfa->sb_char + iVar29);\n            *puVar36 = *puVar36 | 1 << ((byte)iVar32 & 0x1f);\n            if ((uVar28 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar23 != uVar28) goto LAB_000283fc;\n            iVar32 = iVar32 + 1;\n            uVar28 = uVar28 + 1;\n          } while (iVar32 != 0x20);\nLAB_00028460:\n          iVar29 = iVar29 + 4;\n        } while (iVar29 != 0x20);\n      }\n      else {\n        dfa->sb_char = (re_bitset_ptr_t)(unaff_EDI + 0x58c9);\n      }\n    }\n    if ((dfa->nodes != (re_token_t *)0x0) && (dfa->state_table != (re_state_table_entry *)0x0)) {\n      err = _REG_NOERROR;\n      puVar5 = preg_00->translate;\n      ppuVar46 = &regexp.mbs;\n      for (iVar29 = 0x13; iVar29 != 0; iVar29 = iVar29 + -1) {\n        *ppuVar46 = (uchar *)0x0;\n        ppuVar46 = ppuVar46 + (uint)bVar49 * -2 + 1;\n      }\n      uVar28 = (uint)preg & 0x400000;\n      regexp.icase = uVar28 != 0;\n      regexp.mbs_allocated = puVar5 != (uchar *)0x0 || uVar28 != 0;\n      iVar29 = dfa->mb_cur_max;\n      regexp.map_notascii = (byte)dfa->field_0x58 >> 3 & 1;\n      regexp.is_utf8 = (byte)dfa->field_0x58 >> 2 & 1;\n      regexp.raw_mbs = puVar13;\n      regexp.len = extraout_ECX;\n      regexp.trans = puVar5;\n      regexp.mb_cur_max = iVar29;\n      if (extraout_ECX != 0) {\n        aVar14.idx = re_string_realloc_buffers(&regexp,sVar39);\n        if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n        iVar29 = dfa->mb_cur_max;\n      }\n      if (regexp.mbs_allocated != '\0') {\n        puVar13 = regexp.mbs;\n      }\n      regexp.mbs = puVar13;\n      if (uVar28 == 0) {\n        if (iVar29 < 2) {\n          iVar29 = regexp.bufs_len;\n          regexp.valid_raw_len = regexp.bufs_len;\n          if (puVar5 != (uchar *)0x0) {\n            if (regexp.len <= regexp.bufs_len) {\n              regexp.bufs_len = regexp.len;\n            }\n            iVar29 = regexp.valid_len;\n            regexp.valid_raw_len = regexp.valid_len;\n            if (regexp.valid_len < regexp.bufs_len) {\n              puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n              iVar32 = regexp.valid_len + 1;\n              iVar29 = regexp.bufs_len;\n              regexp.valid_raw_len = regexp.bufs_len;\n              if (iVar32 < regexp.bufs_len) {\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }\n            }\n          }\n        }\n        else {\n          build_wcs_buffer(&regexp);\n          iVar29 = regexp.valid_len;\n        }\n      }\n      else {\n        if (1 < iVar29) {\n          do {\n            aVar14.idx = build_wcs_upper_buffer(&regexp);\n            if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n            iVar29 = regexp.valid_len;\n            if (((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;\n            rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2);\n          } while (rVar15 == _REG_NOERROR);\n          local_b0 = preg_00->buffer;\n          err = rVar15;\n          goto LAB_00027c60;\n        }\n        local_b0 = (re_dfa_t *)regexp.len;\n        if (regexp.bufs_len <= regexp.len) {\n          local_b0 = (re_dfa_t *)regexp.bufs_len;\n        }\n        if (regexp.valid_len < (int)local_b0) {\n          pp_Var25 = __ctype_toupper_loc();\n          while( true ) {\n            if (regexp.trans == (uchar *)0x0) {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n            }\n            else {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }\n            if (local_b0 == (re_dfa_t *)(regexp.valid_len + 1)) break;\n            regexp.valid_len = regexp.valid_len + 1;\n            puVar13 = regexp.mbs;\n          }\n        }\n        else {\n          local_b0 = (re_dfa_t *)regexp.valid_len;\n        }\n        regexp.valid_raw_len = (Idx)local_b0;\n        iVar29 = regexp.valid_raw_len;\n      }\nLAB_00027d86:\n      regexp.valid_len = iVar29;\n      err = _REG_NOERROR;\n      prVar7 = preg_00->buffer;\n      preg_00->re_nsub = 0;\n      prVar7->syntax = (reg_syntax_t)preg;\n      syntax_00 = 0x27db7;\n      iVar29 = peek_token(&current_token,&regexp,(uint)preg | 0x800000);\n      regexp.cur_idx = regexp.cur_idx + iVar29;\n      pbVar16 = parse_reg_exp((re_string_t *)preg,(regex_t *)0x0,(re_token_t *)&err,syntax_00,\n                              in_stack_ffffff44.idx,in_stack_ffffff48);\n      if ((err != _REG_NOERROR) && (pbVar16 == (bin_tree_t *)0x0)) {\n        dfa->str_tree = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        goto LAB_00027c60;\n      }\n      iVar29 = prVar7->str_tree_storage_idx;\n      if (iVar29 == 0x1f) {\n        pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n        if (pbVar26 != (bin_tree_storage_t *)0x0) {\n          iVar32 = 1;\n          iVar37 = 4;\n          iVar31 = 0x18;\n          pbVar26->next = prVar7->str_tree_storage;\n          iVar29 = 0;\n          prVar7->str_tree_storage = pbVar26;\n          goto LAB_00027e0d;\n        }\n        local_b0 = preg_00->buffer;\n        if (pbVar16 != (bin_tree_t *)0x0) {\n          pbVar43 = (bin_tree_t *)0x0;\n          bVar47 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        pbVar26 = prVar7->str_tree_storage;\n        iVar32 = iVar29 + 1;\n        iVar31 = iVar29 * 0x20 + 0x18;\n        iVar37 = iVar29 * 0x20 + 4;\nLAB_00027e0d:\n        prVar7->str_tree_storage_idx = iVar32;\n        pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].left = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].right = (bin_tree_t *)0x0;\n        *(undefined1 *)((int)&pbVar26->data[0].parent + iVar31) = 2;\n        puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n        *puVar2 = *puVar2 & 0xf3;\n        pbVar43 = (bin_tree_t *)((int)pbVar26->data + iVar37 + -4);\n        bVar47 = pbVar43 == (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].node_idx = -1;\n        pbVar22 = pbVar43;\n        if (pbVar16 != (bin_tree_t *)0x0) {\nLAB_00027e67:\n          iVar29 = prVar7->str_tree_storage_idx;\n          if (iVar29 == 0x1f) {\n            pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n            if (pbVar26 == (bin_tree_storage_t *)0x0) goto LAB_00028d28;\n            iVar32 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            pbVar26->next = prVar7->str_tree_storage;\n            iVar29 = 0;\n            prVar7->str_tree_storage = pbVar26;\n          }\n          else {\n            iVar32 = iVar29 + 1;\n            local_98 = iVar29 * 0x20 + 4;\n            local_94 = iVar29 * 0x20 + 0x18;\n            pbVar26 = prVar7->str_tree_storage;\n          }\n          prVar7->str_tree_storage_idx = iVar32;\n          pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n          pbVar22 = (bin_tree_t *)((int)pbVar26->data + local_98 + -4);\n          pbVar26->data[iVar29].left = pbVar16;\n          pbVar26->data[iVar29].right = pbVar43;\n          *(undefined1 *)((int)&pbVar26->data[0].parent + local_94) = 0x10;\n          puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n          *puVar2 = *puVar2 & 0xf3;\n          pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].node_idx = -1;\n          bVar47 = (bool)(bVar47 | pbVar22 == (bin_tree_t *)0x0);\n          pbVar16->parent = pbVar22;\n          if (pbVar43 != (bin_tree_t *)0x0) {\n            pbVar43->parent = pbVar22;\n          }\n        }\n        prVar7 = local_b0;\n        if (!bVar47) {\n          dfa->str_tree = pbVar22;\n          sVar11 = local_b0->nodes_alloc * 4;\n          __size = local_b0->nodes_alloc * 0xc;\n          pIVar17 = (Idx *)malloc(sVar11);\n          local_b0->nexts = pIVar17;\n          pIVar18 = (Idx *)malloc(sVar11);\n          local_b0->org_indices = pIVar18;\n          prVar19 = (re_node_set *)malloc(__size);\n          local_b0->edests = prVar19;\n          prVar20 = (re_node_set *)malloc(__size);\n          local_b0->eclosures = prVar20;\n          if ((((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0)) && (prVar20 != (re_node_set *)0x0)) {\n            sVar39 = preg_00->re_nsub;\n            __ptr = (size_t *)malloc(sVar39 * 4);\n            local_b0->subexp_map = (Idx *)__ptr;\n            pbVar16 = local_b0->str_tree;\n            if (__ptr != (size_t *)0x0) {\n              sVar33 = 0;\n              if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }\n              cVar27 = (pbVar16->token).field_0x4;\n              pbVar43 = pbVar16->left;\n              pbVar22 = pbVar16;\nLAB_00028010:\n              pbVar38 = pbVar22;\n              pbVar22 = pbVar43;\n              pbVar34 = pbVar22;\n              if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar27 != '\x11') goto joined_r0x00028003;\n              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          err = _REG_ESPACE;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      err = _REG_ESPACE;\n      dfa->str_tree = (bin_tree_t *)0x0;\n      goto LAB_00027c60;\n    }\n  }\nLAB_000282d0:\n  err = _REG_ESPACE;\n  goto LAB_000282d8;\ncode_r0x00028148:\n  cVar27 = (pbVar22->token).field_0x4;\n  pbVar34 = pbVar22->left;\n  pbVar43 = pbVar34;\n  if (cVar27 == '\x11') {\n    iVar29 = (pbVar22->token).opr.idx;\n    pbVar38->left = pbVar34;\n    if (pbVar34 != (bin_tree_t *)0x0) {\n      pbVar34->parent = pbVar38;\n    }\n    __ptr[iVar29] = __ptr[(pbVar38->token).opr.idx];\n    if (iVar29 < 0x20) {\n      local_b0->used_bkref_map = local_b0->used_bkref_map & ~(1 << ((byte)iVar29 & 0x1f));\n    }\njoined_r0x00028003:\n    if (pbVar34 == (bin_tree_t *)0x0) {\nLAB_00028038:\n      pbVar43 = (bin_tree_t *)0x0;\n      while ((pbVar34 = pbVar38->right, pbVar34 == pbVar43 || (pbVar34 == (bin_tree_t *)0x0))) {\n        ppbVar8 = &pbVar38->parent;\n        pbVar43 = pbVar38;\n        pbVar38 = *ppbVar8;\n        if (*ppbVar8 == (bin_tree_t *)0x0) {\n          if (sVar39 == 0) goto LAB_00028074;\n          sVar33 = *__ptr;\n          if (sVar33 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar27 = (pbVar34->token).field_0x4;\n    pbVar43 = pbVar34->left;\n    pbVar22 = pbVar34;\n  }\n  goto LAB_00028010;\n  while (__ptr[sVar33] == sVar33) {\nLAB_0002806d:\n    sVar33 = sVar33 + 1;\n    if (sVar33 == sVar39) goto LAB_00028074;\n  }\nLAB_0002809c:\n  do {\n    pbVar22 = pbVar16->left;\n    pbVar43 = pbVar16;\n    while (pbVar16 = pbVar22, pbVar16 != (bin_tree_t *)0x0) {\n      pbVar43 = pbVar16;\n      pbVar22 = pbVar16->left;\n    }\n    pbVar16 = pbVar43->right;\n  } while (pbVar16 != (bin_tree_t *)0x0);\n  pbVar22 = (bin_tree_t *)0x0;\n  pbVar16 = (bin_tree_t *)0x0;\n  do {\n    current_token.opr.sbcset = (re_bitset_ptr_t)0x0;\n    if ((pbVar22 == (bin_tree_t *)0x0) || ((pbVar22->token).field_0x4 != '\x11')) {\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar22);\n      pbVar43->left = pbVar16;\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        pbVar16->parent = pbVar43;\n      }\n      pbVar16 = pbVar43->right;\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\njoined_r0x000280c8:\n        if (cVar27 == '\x11') {\n          pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16);\n          pbVar43->right = pbVar16;\n          if (pbVar16 != (bin_tree_t *)0x0) {\n            pbVar16->parent = pbVar43;\n          }\n        }\n      }\n      aVar14 = current_token.opr;\n      if (current_token.opr.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n    }\n    pbVar34 = pbVar43->parent;\n    if (pbVar34 == (bin_tree_t *)0x0) {\n      pbVar16 = local_b0->str_tree;\n      goto LAB_000281a0;\n    }\n    pbVar16 = pbVar34->right;\n    if ((pbVar16 != (bin_tree_t *)0x0) && (pbVar43 != pbVar16)) goto LAB_0002809c;\n    pbVar22 = pbVar34->left;\n    pbVar43 = pbVar34;\n  } while( true );\nLAB_00028074:\n  free(__ptr);\n  local_b0->subexp_map = (Idx *)0x0;\n  pbVar16 = local_b0->str_tree;\n  goto LAB_0002809c;\nLAB_000281a0:\n  do {\n    do {\n      pbVar43 = pbVar16;\n      pbVar16 = pbVar43->left;\n    } while (pbVar43->left != (bin_tree_t *)0x0);\n    pbVar16 = pbVar43->right;\n  } while (pbVar43->right != (bin_tree_t *)0x0);\n  do {\n    if ((pbVar43->token).field_0x4 == '\x10') {\n      IVar21 = pbVar43->left->node_idx;\n      pbVar43->first = pbVar43->left->first;\n      pbVar43->node_idx = IVar21;\nLAB_000281c7:\n      pbVar22 = pbVar43->parent;\n    }\n    else {\n      pbVar43->first = pbVar43;\n      token._4_4_ = in_stack_ffffff48;\n      token.opr.sbcset = in_stack_ffffff44.sbcset;\n      IVar21 = re_dfa_add_node(local_b0,token);\n      pbVar43->node_idx = IVar21;\n      if (IVar21 == -1) goto LAB_00028330;\n      if ((pbVar43->token).field_0x4 != '\f') goto LAB_000281c7;\n      *(re_context_type *)&local_b0->nodes[IVar21].field_0x4 =\n           *(uint *)&local_b0->nodes[IVar21].field_0x4 & 0xfffc00ff |\n           ((pbVar43->token).opr.ctx_type & 0x3ff) << 8;\n      pbVar22 = pbVar43->parent;\n    }\n    if (pbVar22 == (bin_tree_t *)0x0) {\n      pbVar16 = local_b0->str_tree;\n      cVar27 = (pbVar16->token).field_0x4;\n      pbVar43 = pbVar16->left;\n      pbVar22 = pbVar16;\n      if (cVar27 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    pbVar16 = pbVar22->right;\n    bVar47 = pbVar43 == pbVar16;\n    pbVar43 = pbVar22;\n  } while (pbVar16 == (bin_tree_t *)0x0 || bVar47);\n  goto LAB_000281a0;\nLAB_00028250:\n  if (cVar27 == '\x10') {\n    pbVar34 = pbVar22->right;\n    pbVar43->next = pbVar34->first;\n    pbVar34->next = pbVar22->next;\n  }\n  else {\n    if (pbVar43 != (bin_tree_t *)0x0) {\n      pbVar43->next = pbVar22->next;\n    }\n    pbVar34 = pbVar22->right;\n    if (pbVar34 == (bin_tree_t *)0x0) {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar22->parent;\n        while( true ) {\n          pbVar34 = pbVar43;\n          if (pbVar34 == (bin_tree_t *)0x0) goto LAB_00028398;\n          pbVar43 = pbVar34->right;\n          if ((pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22)) break;\n          pbVar43 = pbVar34->parent;\n          pbVar22 = pbVar34;\n        }\n      }\n    }\n    else {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar34;\n      }\n      pbVar34->next = pbVar22->next;\n    }\n  }\n  while( true ) {\n    cVar27 = (pbVar43->token).field_0x4;\n    ppbVar8 = &pbVar43->left;\n    pbVar22 = pbVar43;\n    pbVar43 = *ppbVar8;\n    if (cVar27 != '\v') break;\nLAB_00028283:\n    pbVar43->next = pbVar22;\n  }\n  goto LAB_00028250;\n  while (pbVar22 = pbVar34->parent, pbVar43 = pbVar34, pbVar34->parent != (bin_tree_t *)0x0) {\n    while( true ) {\n      pbVar34 = pbVar22;\n      pbVar16 = pbVar34->right;\n      bVar47 = pbVar16 == pbVar43;\n      if (bVar47 || pbVar16 == (bin_tree_t *)0x0) break;\nLAB_00028398:\n      do {\n        bVar49 = (pbVar16->token).field_0x4;\n        if (bVar49 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))\n                             ();\n          return rVar15;\n        }\n        if ((bVar49 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        local_b0->nexts[pbVar16->node_idx] = pbVar16->next->node_idx;\n        pbVar43 = pbVar16->left;\n        pbVar22 = pbVar16;\n        pbVar16 = pbVar43;\n      } while (pbVar43 != (bin_tree_t *)0x0);\n    }\n  }\n  bVar48 = false;\n  sVar39 = 0;\n  do {\n    sVar33 = sVar39;\n    if (local_b0->nodes_len == sVar39) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      if (local_b0->eclosures[sVar33].nelem != 0) goto code_r0x000284f2;\n      aVar14.idx = calc_eclosure_iter((re_node_set *)&current_token,local_b0,sVar33,true);\n      if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n      sVar39 = sVar33 + 1;\n      if (local_b0->eclosures[sVar33].nelem != 0) break;\n      free(local_78);\n      sVar33 = sVar39;\n      bVar48 = bVar47 || pbVar16 == (bin_tree_t *)0x0;\n      if (local_b0->nodes_len == sVar39) goto LAB_00028505;\n    }\n  } while( true );\ncode_r0x000284f2:\n  sVar39 = sVar33 + 1;\n  sVar33 = sVar39;\n  if (local_b0->nodes_len == sVar39) {\nLAB_000284fa:\n    if (!bVar48) {\n      if (((((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0)) ||\n          ((local_b0->field_0x58 & 1) == 0)) && (local_b0->nbackref == 0)) goto LAB_00028860;\n      prVar19 = (re_node_set *)malloc(sVar39 * 0xc);\n      local_b0->inveclosures = prVar19;\n      if (prVar19 != (re_node_set *)0x0) {\n        uVar40 = 0;\n        if (sVar39 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      err = _REG_ESPACE;\n      local_b0 = preg_00->buffer;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    sVar33 = 0;\n    bVar48 = false;\n  }\n  goto LAB_000284dd;\nLAB_00028330:\n  aVar14.idx = _REG_ESPACE;\nLAB_00028335:\n  local_b0 = preg_00->buffer;\n  err = (reg_errcode_t)aVar14;\nLAB_00027c60:\n  pbVar26 = local_b0->str_tree_storage;\n  while (pbVar26 != (bin_tree_storage_t *)0x0) {\n    pbVar6 = pbVar26->next;\n    free(pbVar26);\n    pbVar26 = pbVar6;\n  }\n  local_b0->str_tree_storage = (bin_tree_storage_t *)0x0;\n  local_b0->str_tree_storage_idx = 0x1f;\n  local_b0->str_tree = (bin_tree_t *)0x0;\n  free(local_b0->org_indices);\n  local_b0->org_indices = (Idx *)0x0;\n  free(regexp.wcs);\n  free(regexp.offsets);\n  if (regexp.mbs_allocated != '\0') {\n    free(regexp.mbs);\n  }\n  goto LAB_000282d8;\nLAB_0002897d:\n  do {\n    uVar30 = uVar40 + uVar28 >> 1;\n    if (iVar32 <= local_78[uVar30]) {\n      if (uVar30 <= uVar28) break;\n      uVar41 = uVar28 + uVar30 >> 1;\n      iVar31 = local_78[uVar41];\n      uVar40 = uVar30;\n      uVar30 = uVar41;\n      while (iVar32 <= iVar31) {\n        if (uVar30 <= uVar28) goto LAB_000289b4;\n        uVar41 = uVar28 + uVar30 >> 1;\n        uVar40 = uVar30;\n        uVar30 = uVar41;\n        iVar31 = local_78[uVar41];\n      }\n    }\n    uVar28 = uVar30 + 1;\n  } while (uVar28 < uVar40);\nLAB_000289b4:\n  if (local_78[uVar28] == iVar32) {\nLAB_00028908:\n    iVar29 = iVar29 + 1;\n    aVar14 = (anon_union_4_5_a39f51ca_for_opr)current_token._4_4_;\n    if ((int)current_token._4_4_ <= iVar29) goto LAB_000289f2;\n    goto LAB_00028917;\n  }\n  rVar15 = re_node_set_merge((re_node_set *)&current_token,dfa->eclosures + iVar32);\n  if (rVar15 != _REG_NOERROR) goto LAB_00028a39;\n  iVar29 = 1;\n  aVar14 = (anon_union_4_5_a39f51ca_for_opr)current_token._4_4_;\n  if ((int)current_token._4_4_ < 2) goto LAB_000289f2;\n  goto LAB_00028917;\nLAB_0002875b:\n  while( true ) {\n    prVar19 = prVar19 + uVar40;\n    prVar19->alloc = 0;\n    prVar19->nelem = 0;\n    prVar19->elems = (Idx *)0x0;\n    uVar30 = local_b0->nodes_len;\n    if (uVar30 <= uVar40 + 1) break;\n    prVar19 = local_b0->inveclosures;\n    uVar40 = uVar40 + 1;\n  }\n  if (uVar30 != 0) {\n    local_9c = 0;\n    local_b0 = (re_dfa_t *)local_b0->eclosures;\n    do {\n      pIVar17 = ((re_node_set *)((int)local_b0 + local_9c * 0xc))->elems;\n      if (0 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem) {\n        iVar29 = 0;\n        do {\n          prVar19 = prVar7->inveclosures + pIVar17[iVar29];\n          iVar32 = prVar19->nelem;\n          pIVar18 = prVar19->elems;\n          if (prVar19->alloc == iVar32) {\n            prVar19->alloc = (iVar32 + 1) * 2;\n            pIVar18 = (Idx *)realloc(pIVar18,(iVar32 + 1) * 8);\n            if (pIVar18 == (Idx *)0x0) goto LAB_00028330;\n            local_b0 = (re_dfa_t *)prVar7->eclosures;\n            iVar32 = prVar19->nelem;\n            prVar19->elems = pIVar18;\n          }\n          iVar29 = iVar29 + 1;\n          prVar19->nelem = iVar32 + 1;\n          pIVar18[iVar32] = local_9c;\n        } while (iVar29 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem);\n        uVar30 = prVar7->nodes_len;\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar30);\n  }\nLAB_00028860:\n  err = _REG_NOERROR;\n  if ((((byte)dfa->field_0x58 >> 2 & uVar28 == 0) != 0) && (preg_00->translate == (uchar *)0x0)) {\n    if (dfa->nodes_len != 0) {\n      if (0xc < (byte)dfa->nodes->field_0x4) {\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +\n                         unaff_EDI + 0xc669))();\n      return rVar15;\n    }\n    dfa->mb_cur_max = 1;\n    dfa->field_0x58 = (0 < dfa->nbackref) * '\x02' | dfa->field_0x58 & 0xf9;\n  }\n  iVar29 = dfa->str_tree->first->node_idx;\n  dfa->init_node = iVar29;\n  prVar19 = dfa->eclosures;\n  aVar14 = (anon_union_4_5_a39f51ca_for_opr)prVar19[iVar29].nelem;\n  if (aVar14.idx < 1) {\n    current_token.opr.sbcset = (re_bitset_ptr_t)0x0;\n    current_token._4_4_ = 0;\n    local_78 = (Idx *)0x0;\n    err_2 = _REG_NOERROR;\nLAB_000289f2:\n    prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,0);\n    dfa->init_state = prVar24;\n    rVar15 = err_2;\n    if (prVar24 != (re_dfastate_t *)0x0) {\n      if ((char)prVar24->field_0x34 < '\0') {\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,1);\n        dfa->init_state_word = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,2);\n        dfa->init_state_nl = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,6);\n        dfa->init_state_begbuf = prVar24;\n        rVar15 = err_2;\n        if (((dfa->init_state_word == (re_dfastate_t *)0x0) ||\n            (dfa->init_state_nl == (re_dfastate_t *)0x0)) || (prVar24 == (re_dfastate_t *)0x0))\n        goto LAB_00028a39;\n      }\n      else {\n        dfa->init_state_begbuf = prVar24;\n        dfa->init_state_nl = prVar24;\n        dfa->init_state_word = prVar24;\n      }\n      free(local_78);\n      rVar15 = _REG_NOERROR;\n    }\n  }\n  else {\n    current_token.opr = aVar14;\n    current_token._4_4_ = aVar14;\n    local_78 = (Idx *)malloc(aVar14.idx * 4);\n    if (local_78 != (Idx *)0x0) {\n      memcpy(local_78,prVar19[iVar29].elems,aVar14.idx * 4);\n      err_2 = _REG_NOERROR;\n      if (0 < dfa->nbackref) {\n        iVar29 = 0;\nLAB_00028917:\n        prVar9 = dfa->nodes + local_78[iVar29];\n        if (prVar9->field_0x4 == '\x04') {\n          pbVar35 = (re_bitset_ptr_t)0x0;\n          do {\n            prVar1 = dfa->nodes + local_78[(int)pbVar35];\n            if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {\n              uVar40 = aVar14.idx - 1;\n              uVar28 = 0;\n              iVar32 = *dfa->edests[local_78[iVar29]].elems;\n              if (uVar40 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1);\n          } while (aVar14.sbcset != pbVar35);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    rVar15 = _REG_ESPACE;\n  }\nLAB_00028a39:\n  prVar7 = preg_00->buffer;\n  pbVar26 = prVar7->str_tree_storage;\n  err = rVar15;\n  while (pbVar26 != (bin_tree_storage_t *)0x0) {\n    pbVar6 = pbVar26->next;\n    free(pbVar26);\n    pbVar26 = pbVar6;\n  }\n  prVar7->str_tree_storage = (bin_tree_storage_t *)0x0;\n  prVar7->str_tree_storage_idx = 0x1f;\n  prVar7->str_tree = (bin_tree_t *)0x0;\n  free(prVar7->org_indices);\n  prVar7->org_indices = (Idx *)0x0;\n  free(regexp.wcs);\n  free(regexp.offsets);\n  if (regexp.mbs_allocated != '\0') {\n    free(regexp.mbs);\n  }\n  rVar15 = err;\n  if (err == _REG_NOERROR) goto LAB_000282f4;\nLAB_000282d8:\n  free_dfa_content(dfa);\n  preg_00->buffer = (re_dfa_t *)0x0;\n  preg_00->allocated = 0;\n  rVar15 = err;\nLAB_000282f4:\n  if (iVar4 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return rVar15;\n}" { (declaration "re_token_t *prVar1;" type_identifier (pointer_declarator "*prVar1" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uchar *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "bin_tree_storage_t *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "re_dfa_t *prVar7;" type_identifier (pointer_declarator "*prVar7" * identifier) ;) (declaration "re_token_t token;" type_identifier identifier ;) (declaration "bin_tree_t **ppbVar8;" type_identifier (pointer_declarator "**ppbVar8" * (pointer_declarator "*ppbVar8" * identifier)) ;) (declaration "regex_t *preg_00;" type_identifier (pointer_declarator "*preg_00" * identifier) ;) (declaration "re_token_t *prVar9;" type_identifier (pointer_declarator "*prVar9" * identifier) ;) (declaration "re_state_table_entry *prVar10;" type_identifier (pointer_declarator "*prVar10" * identifier) ;) (declaration "size_t sVar11;" primitive_type identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "uchar *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "anon_union_4_5_a39f51ca_for_opr aVar14;" type_identifier identifier ;) (declaration "reg_errcode_t rVar15;" type_identifier identifier ;) (declaration "bin_tree_t *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "Idx *pIVar17;" type_identifier (pointer_declarator "*pIVar17" * identifier) ;) (declaration "Idx *pIVar18;" type_identifier (pointer_declarator "*pIVar18" * identifier) ;) (declaration "re_node_set *prVar19;" type_identifier (pointer_declarator "*prVar19" * identifier) ;) (declaration "re_node_set *prVar20;" type_identifier (pointer_declarator "*prVar20" * identifier) ;) (declaration "size_t *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "Idx IVar21;" type_identifier identifier ;) (declaration "bin_tree_t *pbVar22;" type_identifier (pointer_declarator "*pbVar22" * identifier) ;) (declaration "wint_t wVar23;" type_identifier identifier ;) (declaration "re_dfastate_t *prVar24;" type_identifier (pointer_declarator "*prVar24" * identifier) ;) (declaration "__int32_t **pp_Var25;" type_identifier (pointer_declarator "**pp_Var25" * (pointer_declarator "*pp_Var25" * identifier)) ;) (declaration "re_dfa_t *dfa;" type_identifier (pointer_declarator "*dfa" * identifier) ;) (declaration "bin_tree_storage_t *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "char cVar27;" primitive_type identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "uint uVar28;" type_identifier identifier ;) (declaration "int iVar29;" primitive_type identifier ;) (declaration "uint uVar30;" type_identifier identifier ;) (declaration "int iVar31;" primitive_type identifier ;) (declaration "int iVar32;" primitive_type identifier ;) (declaration "size_t sVar33;" primitive_type identifier ;) (declaration "bin_tree_t *pbVar34;" type_identifier (pointer_declarator "*pbVar34" * identifier) ;) (declaration "re_bitset_ptr_t pbVar35;" type_identifier identifier ;) (declaration "uint *puVar36;" type_identifier (pointer_declarator "*puVar36" * identifier) ;) (declaration "int iVar37;" primitive_type identifier ;) (declaration "size_t __size;" primitive_type identifier ;) (declaration "bin_tree_t *pbVar38;" type_identifier (pointer_declarator "*pbVar38" * identifier) ;) (declaration "size_t sVar39;" primitive_type identifier ;) (declaration "uint uVar40;" type_identifier identifier ;) (declaration "uint uVar41;" type_identifier identifier ;) (declaration "re_hashval_t rVar42;" type_identifier identifier ;) (declaration "bin_tree_t *pbVar43;" type_identifier (pointer_declarator "*pbVar43" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined4 *puVar44;" type_identifier (pointer_declarator "*puVar44" * identifier) ;) (declaration "byte *pbVar45;" type_identifier (pointer_declarator "*pbVar45" * identifier) ;) (declaration "uchar **ppuVar46;" type_identifier (pointer_declarator "**ppuVar46" * (pointer_declarator "*ppuVar46" * identifier)) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar47;" primitive_type identifier ;) (declaration "bool bVar48;" primitive_type identifier ;) (declaration "byte bVar49;" type_identifier identifier ;) (declaration "undefined8 uVar50;" type_identifier identifier ;) (declaration "reg_syntax_t syntax_00;" type_identifier identifier ;) (declaration "anon_union_4_5_a39f51ca_for_opr in_stack_ffffff44;" type_identifier identifier ;) (declaration "reg_errcode_t *in_stack_ffffff48;" type_identifier (pointer_declarator "*in_stack_ffffff48" * identifier) ;) (declaration "re_dfa_t *local_b0;" type_identifier (pointer_declarator "*local_b0" * identifier) ;) (declaration "uint local_9c;" type_identifier identifier ;) (declaration "int local_98;" primitive_type identifier ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "reg_errcode_t err;" type_identifier identifier ;) (declaration "reg_errcode_t err_2;" type_identifier identifier ;) (declaration "re_token_t current_token;" type_identifier identifier ;) (declaration "Idx *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "re_string_t regexp;" type_identifier identifier ;) (expression_statement "bVar49 = 0;" (assignment_expression "bVar49 = 0" identifier = number_literal) ;) (expression_statement "uVar50 = __x86_get_pc_thunk_di();" (assignment_expression "uVar50 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar13 = (uchar *)((ulonglong)uVar50 >> 0x20);" (assignment_expression "puVar13 = (uchar *)((ulonglong)uVar50 >> 0x20)" identifier = (cast_expression "(uchar *)((ulonglong)uVar50 >> 0x20)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar50 >> 0x20)" ( (binary_expression "(ulonglong)uVar50 >> 0x20" (cast_expression "(ulonglong)uVar50" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "preg_00 = (regex_t *)uVar50;" (assignment_expression "preg_00 = (regex_t *)uVar50" identifier = (cast_expression "(regex_t *)uVar50" ( (type_descriptor "regex_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "dfa = preg_00->buffer;" (assignment_expression "dfa = preg_00->buffer" identifier = (field_expression "preg_00->buffer" identifier -> field_identifier)) ;) (expression_statement "iVar4 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar4 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "preg_00->field_0x1c = preg_00->field_0x1c & 0x90;" (assignment_expression "preg_00->field_0x1c = preg_00->field_0x1c & 0x90" (field_expression "preg_00->field_0x1c" identifier -> field_identifier) = (binary_expression "preg_00->field_0x1c & 0x90" (field_expression "preg_00->field_0x1c" identifier -> field_identifier) & number_literal)) ;) (expression_statement "err = _REG_NOERROR;" (assignment_expression "err = _REG_NOERROR" identifier = identifier) ;) (expression_statement "preg_00->syntax = (reg_syntax_t)preg;" (assignment_expression "preg_00->syntax = (reg_syntax_t)preg" (field_expression "preg_00->syntax" identifier -> field_identifier) = (cast_expression "(reg_syntax_t)preg" ( (type_descriptor "reg_syntax_t" type_identifier) ) identifier)) ;) (expression_statement "preg_00->used = 0;" (assignment_expression "preg_00->used = 0" (field_expression "preg_00->used" identifier -> field_identifier) = number_literal) ;) (expression_statement "preg_00->re_nsub = 0;" (assignment_expression "preg_00->re_nsub = 0" (field_expression "preg_00->re_nsub" identifier -> field_identifier) = number_literal) ;) (if_statement "if (preg_00->allocated < 0x88) {\n    dfa = (re_dfa_t *)realloc(dfa,0x88);\n    if (dfa == (re_dfa_t *)0x0) {\n      rVar15 = _REG_ESPACE;\n      goto LAB_000282f4;\n    }\n    preg_00->allocated = 0x88;\n    preg_00->buffer = dfa;\n  }" if (parenthesized_expression "(preg_00->allocated < 0x88)" ( (binary_expression "preg_00->allocated < 0x88" (field_expression "preg_00->allocated" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n    dfa = (re_dfa_t *)realloc(dfa,0x88);\n    if (dfa == (re_dfa_t *)0x0) {\n      rVar15 = _REG_ESPACE;\n      goto LAB_000282f4;\n    }\n    preg_00->allocated = 0x88;\n    preg_00->buffer = dfa;\n  }" { (expression_statement "dfa = (re_dfa_t *)realloc(dfa,0x88);" (assignment_expression "dfa = (re_dfa_t *)realloc(dfa,0x88)" identifier = (cast_expression "(re_dfa_t *)realloc(dfa,0x88)" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "realloc(dfa,0x88)" identifier (argument_list "(dfa,0x88)" ( identifier , number_literal ))))) ;) (if_statement "if (dfa == (re_dfa_t *)0x0) {\n      rVar15 = _REG_ESPACE;\n      goto LAB_000282f4;\n    }" if (parenthesized_expression "(dfa == (re_dfa_t *)0x0)" ( (binary_expression "dfa == (re_dfa_t *)0x0" identifier == (cast_expression "(re_dfa_t *)0x0" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      rVar15 = _REG_ESPACE;\n      goto LAB_000282f4;\n    }" { (expression_statement "rVar15 = _REG_ESPACE;" (assignment_expression "rVar15 = _REG_ESPACE" identifier = identifier) ;) (goto_statement "goto LAB_000282f4;" goto statement_identifier ;) })) (expression_statement "preg_00->allocated = 0x88;" (assignment_expression "preg_00->allocated = 0x88" (field_expression "preg_00->allocated" identifier -> field_identifier) = number_literal) ;) (expression_statement "preg_00->buffer = dfa;" (assignment_expression "preg_00->buffer = dfa" (field_expression "preg_00->buffer" identifier -> field_identifier) = identifier) ;) })) (expression_statement "puVar44 = (undefined4 *)((uint)&dfa->nodes_alloc & 0xfffffffc);" (assignment_expression "puVar44 = (undefined4 *)((uint)&dfa->nodes_alloc & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)&dfa->nodes_alloc & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)&dfa->nodes_alloc & 0xfffffffc)" ( (binary_expression "(uint)&dfa->nodes_alloc & 0xfffffffc" (binary_expression "(uint)&dfa->nodes_alloc" (parenthesized_expression "(uint)" ( identifier )) & (field_expression "dfa->nodes_alloc" identifier -> field_identifier)) & number_literal) )))) ;) (expression_statement "preg_00->used = 0x88;" (assignment_expression "preg_00->used = 0x88" (field_expression "preg_00->used" identifier -> field_identifier) = number_literal) ;) (expression_statement "dfa->nodes = (re_token_t *)0x0;" (assignment_expression "dfa->nodes = (re_token_t *)0x0" (field_expression "dfa->nodes" identifier -> field_identifier) = (cast_expression "(re_token_t *)0x0" ( (type_descriptor "re_token_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "dfa->subexp_map = (Idx *)0x0;" (assignment_expression "dfa->subexp_map = (Idx *)0x0" (field_expression "dfa->subexp_map" identifier -> field_identifier) = (cast_expression "(Idx *)0x0" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar28 = (uint)((int)dfa + (0x88 - (int)puVar44)) >> 2;" (assignment_expression "uVar28 = (uint)((int)dfa + (0x88 - (int)puVar44)) >> 2" identifier = (binary_expression "(uint)((int)dfa + (0x88 - (int)puVar44)) >> 2" (call_expression "(uint)((int)dfa + (0x88 - (int)puVar44))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)dfa + (0x88 - (int)puVar44))" ( (binary_expression "(int)dfa + (0x88 - (int)puVar44)" (cast_expression "(int)dfa" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x88 - (int)puVar44)" ( (binary_expression "0x88 - (int)puVar44" number_literal - (cast_expression "(int)puVar44" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) >> number_literal)) ;) (for_statement "for (; uVar28 != 0; uVar28 = uVar28 - 1) {\n    *puVar44 = 0;\n    puVar44 = puVar44 + (uint)bVar49 * -2 + 1;\n  }" for ( ; (binary_expression "uVar28 != 0" identifier != number_literal) ; (assignment_expression "uVar28 = uVar28 - 1" identifier = (binary_expression "uVar28 - 1" identifier - number_literal)) ) (compound_statement "{\n    *puVar44 = 0;\n    puVar44 = puVar44 + (uint)bVar49 * -2 + 1;\n  }" { (expression_statement "*puVar44 = 0;" (assignment_expression "*puVar44 = 0" (pointer_expression "*puVar44" * identifier) = number_literal) ;) (expression_statement "puVar44 = puVar44 + (uint)bVar49 * -2 + 1;" (assignment_expression "puVar44 = puVar44 + (uint)bVar49 * -2 + 1" identifier = (binary_expression "puVar44 + (uint)bVar49 * -2 + 1" (binary_expression "puVar44 + (uint)bVar49 * -2" identifier + (binary_expression "(uint)bVar49 * -2" (cast_expression "(uint)bVar49" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "dfa->str_tree_storage_idx = 0x1f;" (assignment_expression "dfa->str_tree_storage_idx = 0x1f" (field_expression "dfa->str_tree_storage_idx" identifier -> field_identifier) = number_literal) ;) (if_statement "if (extraout_ECX < 0xaaaaaaa) {\n    sVar39 = extraout_ECX + 1;\n    dfa->nodes_alloc = sVar39;\n    prVar9 = (re_token_t *)malloc(sVar39 * 8);\n    dfa->nodes = prVar9;\n    if (extraout_ECX == 0) {\n      rVar42 = 0;\n      uVar28 = 1;\n    }\n    else {\n      uVar28 = 1;\n      do {\n        uVar28 = uVar28 * 2;\n      } while (uVar28 <= extraout_ECX);\n      rVar42 = uVar28 - 1;\n    }\n    prVar10 = (re_state_table_entry *)calloc(0xc,uVar28);\n    dfa->state_hash_mask = rVar42;\n    dfa->state_table = prVar10;\n    sVar11 = __ctype_get_mb_cur_max();\n    dfa->mb_cur_max = sVar11;\n    pbVar12 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar12 & 0xdf) == 0x55) && ((pbVar12[1] & 0xdf) == 0x54)) &&\n       ((pbVar12[2] & 0xdf) == 0x46)) {\n      bVar47 = pbVar12[3] < 0x2d;\n      bVar48 = pbVar12[3] == 0x2d;\n      iVar29 = 2;\n      pbVar12 = pbVar12 + bVar48 + 3;\n      pbVar45 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar29 == 0) break;\n        iVar29 = iVar29 + -1;\n        bVar47 = *pbVar12 < *pbVar45;\n        bVar48 = *pbVar12 == *pbVar45;\n        pbVar12 = pbVar12 + (uint)bVar49 * -2 + 1;\n        pbVar45 = pbVar45 + (uint)bVar49 * -2 + 1;\n      } while (bVar48);\n      if ((!bVar47 && !bVar48) == bVar47) {\n        dfa->field_0x58 = dfa->field_0x58 | 4;\n      }\n    }\n    bVar3 = dfa->field_0x58;\n    dfa->field_0x58 = bVar3 & 0xf7;\n    if (1 < dfa->mb_cur_max) {\n      if ((bVar3 & 4) == 0) {\n        pbVar35 = (re_bitset_ptr_t)calloc(0x20,1);\n        dfa->sb_char = pbVar35;\n        if (pbVar35 == (re_bitset_ptr_t)0x0) goto LAB_000282d0;\n        iVar29 = 0;\n        do {\n          uVar28 = iVar29 * 8;\n          iVar32 = 0;\n          do {\n            while( true ) {\n              wVar23 = btowc(uVar28);\n              if (wVar23 != 0xffffffff) break;\n              if ((uVar28 & 0xffffff80) == 0) {\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }\nLAB_00028404:\n              iVar32 = iVar32 + 1;\n              uVar28 = uVar28 + 1;\n              if (iVar32 == 0x20) goto LAB_00028460;\n            }\n            puVar36 = (uint *)((int)dfa->sb_char + iVar29);\n            *puVar36 = *puVar36 | 1 << ((byte)iVar32 & 0x1f);\n            if ((uVar28 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar23 != uVar28) goto LAB_000283fc;\n            iVar32 = iVar32 + 1;\n            uVar28 = uVar28 + 1;\n          } while (iVar32 != 0x20);\nLAB_00028460:\n          iVar29 = iVar29 + 4;\n        } while (iVar29 != 0x20);\n      }\n      else {\n        dfa->sb_char = (re_bitset_ptr_t)(unaff_EDI + 0x58c9);\n      }\n    }\n    if ((dfa->nodes != (re_token_t *)0x0) && (dfa->state_table != (re_state_table_entry *)0x0)) {\n      err = _REG_NOERROR;\n      puVar5 = preg_00->translate;\n      ppuVar46 = &regexp.mbs;\n      for (iVar29 = 0x13; iVar29 != 0; iVar29 = iVar29 + -1) {\n        *ppuVar46 = (uchar *)0x0;\n        ppuVar46 = ppuVar46 + (uint)bVar49 * -2 + 1;\n      }\n      uVar28 = (uint)preg & 0x400000;\n      regexp.icase = uVar28 != 0;\n      regexp.mbs_allocated = puVar5 != (uchar *)0x0 || uVar28 != 0;\n      iVar29 = dfa->mb_cur_max;\n      regexp.map_notascii = (byte)dfa->field_0x58 >> 3 & 1;\n      regexp.is_utf8 = (byte)dfa->field_0x58 >> 2 & 1;\n      regexp.raw_mbs = puVar13;\n      regexp.len = extraout_ECX;\n      regexp.trans = puVar5;\n      regexp.mb_cur_max = iVar29;\n      if (extraout_ECX != 0) {\n        aVar14.idx = re_string_realloc_buffers(&regexp,sVar39);\n        if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n        iVar29 = dfa->mb_cur_max;\n      }\n      if (regexp.mbs_allocated != '\0') {\n        puVar13 = regexp.mbs;\n      }\n      regexp.mbs = puVar13;\n      if (uVar28 == 0) {\n        if (iVar29 < 2) {\n          iVar29 = regexp.bufs_len;\n          regexp.valid_raw_len = regexp.bufs_len;\n          if (puVar5 != (uchar *)0x0) {\n            if (regexp.len <= regexp.bufs_len) {\n              regexp.bufs_len = regexp.len;\n            }\n            iVar29 = regexp.valid_len;\n            regexp.valid_raw_len = regexp.valid_len;\n            if (regexp.valid_len < regexp.bufs_len) {\n              puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n              iVar32 = regexp.valid_len + 1;\n              iVar29 = regexp.bufs_len;\n              regexp.valid_raw_len = regexp.bufs_len;\n              if (iVar32 < regexp.bufs_len) {\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }\n            }\n          }\n        }\n        else {\n          build_wcs_buffer(&regexp);\n          iVar29 = regexp.valid_len;\n        }\n      }\n      else {\n        if (1 < iVar29) {\n          do {\n            aVar14.idx = build_wcs_upper_buffer(&regexp);\n            if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n            iVar29 = regexp.valid_len;\n            if (((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;\n            rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2);\n          } while (rVar15 == _REG_NOERROR);\n          local_b0 = preg_00->buffer;\n          err = rVar15;\n          goto LAB_00027c60;\n        }\n        local_b0 = (re_dfa_t *)regexp.len;\n        if (regexp.bufs_len <= regexp.len) {\n          local_b0 = (re_dfa_t *)regexp.bufs_len;\n        }\n        if (regexp.valid_len < (int)local_b0) {\n          pp_Var25 = __ctype_toupper_loc();\n          while( true ) {\n            if (regexp.trans == (uchar *)0x0) {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n            }\n            else {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }\n            if (local_b0 == (re_dfa_t *)(regexp.valid_len + 1)) break;\n            regexp.valid_len = regexp.valid_len + 1;\n            puVar13 = regexp.mbs;\n          }\n        }\n        else {\n          local_b0 = (re_dfa_t *)regexp.valid_len;\n        }\n        regexp.valid_raw_len = (Idx)local_b0;\n        iVar29 = regexp.valid_raw_len;\n      }\nLAB_00027d86:\n      regexp.valid_len = iVar29;\n      err = _REG_NOERROR;\n      prVar7 = preg_00->buffer;\n      preg_00->re_nsub = 0;\n      prVar7->syntax = (reg_syntax_t)preg;\n      syntax_00 = 0x27db7;\n      iVar29 = peek_token(&current_token,&regexp,(uint)preg | 0x800000);\n      regexp.cur_idx = regexp.cur_idx + iVar29;\n      pbVar16 = parse_reg_exp((re_string_t *)preg,(regex_t *)0x0,(re_token_t *)&err,syntax_00,\n                              in_stack_ffffff44.idx,in_stack_ffffff48);\n      if ((err != _REG_NOERROR) && (pbVar16 == (bin_tree_t *)0x0)) {\n        dfa->str_tree = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        goto LAB_00027c60;\n      }\n      iVar29 = prVar7->str_tree_storage_idx;\n      if (iVar29 == 0x1f) {\n        pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n        if (pbVar26 != (bin_tree_storage_t *)0x0) {\n          iVar32 = 1;\n          iVar37 = 4;\n          iVar31 = 0x18;\n          pbVar26->next = prVar7->str_tree_storage;\n          iVar29 = 0;\n          prVar7->str_tree_storage = pbVar26;\n          goto LAB_00027e0d;\n        }\n        local_b0 = preg_00->buffer;\n        if (pbVar16 != (bin_tree_t *)0x0) {\n          pbVar43 = (bin_tree_t *)0x0;\n          bVar47 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        pbVar26 = prVar7->str_tree_storage;\n        iVar32 = iVar29 + 1;\n        iVar31 = iVar29 * 0x20 + 0x18;\n        iVar37 = iVar29 * 0x20 + 4;\nLAB_00027e0d:\n        prVar7->str_tree_storage_idx = iVar32;\n        pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].left = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].right = (bin_tree_t *)0x0;\n        *(undefined1 *)((int)&pbVar26->data[0].parent + iVar31) = 2;\n        puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n        *puVar2 = *puVar2 & 0xf3;\n        pbVar43 = (bin_tree_t *)((int)pbVar26->data + iVar37 + -4);\n        bVar47 = pbVar43 == (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].node_idx = -1;\n        pbVar22 = pbVar43;\n        if (pbVar16 != (bin_tree_t *)0x0) {\nLAB_00027e67:\n          iVar29 = prVar7->str_tree_storage_idx;\n          if (iVar29 == 0x1f) {\n            pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n            if (pbVar26 == (bin_tree_storage_t *)0x0) goto LAB_00028d28;\n            iVar32 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            pbVar26->next = prVar7->str_tree_storage;\n            iVar29 = 0;\n            prVar7->str_tree_storage = pbVar26;\n          }\n          else {\n            iVar32 = iVar29 + 1;\n            local_98 = iVar29 * 0x20 + 4;\n            local_94 = iVar29 * 0x20 + 0x18;\n            pbVar26 = prVar7->str_tree_storage;\n          }\n          prVar7->str_tree_storage_idx = iVar32;\n          pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n          pbVar22 = (bin_tree_t *)((int)pbVar26->data + local_98 + -4);\n          pbVar26->data[iVar29].left = pbVar16;\n          pbVar26->data[iVar29].right = pbVar43;\n          *(undefined1 *)((int)&pbVar26->data[0].parent + local_94) = 0x10;\n          puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n          *puVar2 = *puVar2 & 0xf3;\n          pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].node_idx = -1;\n          bVar47 = (bool)(bVar47 | pbVar22 == (bin_tree_t *)0x0);\n          pbVar16->parent = pbVar22;\n          if (pbVar43 != (bin_tree_t *)0x0) {\n            pbVar43->parent = pbVar22;\n          }\n        }\n        prVar7 = local_b0;\n        if (!bVar47) {\n          dfa->str_tree = pbVar22;\n          sVar11 = local_b0->nodes_alloc * 4;\n          __size = local_b0->nodes_alloc * 0xc;\n          pIVar17 = (Idx *)malloc(sVar11);\n          local_b0->nexts = pIVar17;\n          pIVar18 = (Idx *)malloc(sVar11);\n          local_b0->org_indices = pIVar18;\n          prVar19 = (re_node_set *)malloc(__size);\n          local_b0->edests = prVar19;\n          prVar20 = (re_node_set *)malloc(__size);\n          local_b0->eclosures = prVar20;\n          if ((((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0)) && (prVar20 != (re_node_set *)0x0)) {\n            sVar39 = preg_00->re_nsub;\n            __ptr = (size_t *)malloc(sVar39 * 4);\n            local_b0->subexp_map = (Idx *)__ptr;\n            pbVar16 = local_b0->str_tree;\n            if (__ptr != (size_t *)0x0) {\n              sVar33 = 0;\n              if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }\n              cVar27 = (pbVar16->token).field_0x4;\n              pbVar43 = pbVar16->left;\n              pbVar22 = pbVar16;\nLAB_00028010:\n              pbVar38 = pbVar22;\n              pbVar22 = pbVar43;\n              pbVar34 = pbVar22;\n              if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar27 != '\x11') goto joined_r0x00028003;\n              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          err = _REG_ESPACE;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      err = _REG_ESPACE;\n      dfa->str_tree = (bin_tree_t *)0x0;\n      goto LAB_00027c60;\n    }\n  }" if (parenthesized_expression "(extraout_ECX < 0xaaaaaaa)" ( (binary_expression "extraout_ECX < 0xaaaaaaa" identifier < number_literal) )) (compound_statement "{\n    sVar39 = extraout_ECX + 1;\n    dfa->nodes_alloc = sVar39;\n    prVar9 = (re_token_t *)malloc(sVar39 * 8);\n    dfa->nodes = prVar9;\n    if (extraout_ECX == 0) {\n      rVar42 = 0;\n      uVar28 = 1;\n    }\n    else {\n      uVar28 = 1;\n      do {\n        uVar28 = uVar28 * 2;\n      } while (uVar28 <= extraout_ECX);\n      rVar42 = uVar28 - 1;\n    }\n    prVar10 = (re_state_table_entry *)calloc(0xc,uVar28);\n    dfa->state_hash_mask = rVar42;\n    dfa->state_table = prVar10;\n    sVar11 = __ctype_get_mb_cur_max();\n    dfa->mb_cur_max = sVar11;\n    pbVar12 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar12 & 0xdf) == 0x55) && ((pbVar12[1] & 0xdf) == 0x54)) &&\n       ((pbVar12[2] & 0xdf) == 0x46)) {\n      bVar47 = pbVar12[3] < 0x2d;\n      bVar48 = pbVar12[3] == 0x2d;\n      iVar29 = 2;\n      pbVar12 = pbVar12 + bVar48 + 3;\n      pbVar45 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar29 == 0) break;\n        iVar29 = iVar29 + -1;\n        bVar47 = *pbVar12 < *pbVar45;\n        bVar48 = *pbVar12 == *pbVar45;\n        pbVar12 = pbVar12 + (uint)bVar49 * -2 + 1;\n        pbVar45 = pbVar45 + (uint)bVar49 * -2 + 1;\n      } while (bVar48);\n      if ((!bVar47 && !bVar48) == bVar47) {\n        dfa->field_0x58 = dfa->field_0x58 | 4;\n      }\n    }\n    bVar3 = dfa->field_0x58;\n    dfa->field_0x58 = bVar3 & 0xf7;\n    if (1 < dfa->mb_cur_max) {\n      if ((bVar3 & 4) == 0) {\n        pbVar35 = (re_bitset_ptr_t)calloc(0x20,1);\n        dfa->sb_char = pbVar35;\n        if (pbVar35 == (re_bitset_ptr_t)0x0) goto LAB_000282d0;\n        iVar29 = 0;\n        do {\n          uVar28 = iVar29 * 8;\n          iVar32 = 0;\n          do {\n            while( true ) {\n              wVar23 = btowc(uVar28);\n              if (wVar23 != 0xffffffff) break;\n              if ((uVar28 & 0xffffff80) == 0) {\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }\nLAB_00028404:\n              iVar32 = iVar32 + 1;\n              uVar28 = uVar28 + 1;\n              if (iVar32 == 0x20) goto LAB_00028460;\n            }\n            puVar36 = (uint *)((int)dfa->sb_char + iVar29);\n            *puVar36 = *puVar36 | 1 << ((byte)iVar32 & 0x1f);\n            if ((uVar28 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar23 != uVar28) goto LAB_000283fc;\n            iVar32 = iVar32 + 1;\n            uVar28 = uVar28 + 1;\n          } while (iVar32 != 0x20);\nLAB_00028460:\n          iVar29 = iVar29 + 4;\n        } while (iVar29 != 0x20);\n      }\n      else {\n        dfa->sb_char = (re_bitset_ptr_t)(unaff_EDI + 0x58c9);\n      }\n    }\n    if ((dfa->nodes != (re_token_t *)0x0) && (dfa->state_table != (re_state_table_entry *)0x0)) {\n      err = _REG_NOERROR;\n      puVar5 = preg_00->translate;\n      ppuVar46 = &regexp.mbs;\n      for (iVar29 = 0x13; iVar29 != 0; iVar29 = iVar29 + -1) {\n        *ppuVar46 = (uchar *)0x0;\n        ppuVar46 = ppuVar46 + (uint)bVar49 * -2 + 1;\n      }\n      uVar28 = (uint)preg & 0x400000;\n      regexp.icase = uVar28 != 0;\n      regexp.mbs_allocated = puVar5 != (uchar *)0x0 || uVar28 != 0;\n      iVar29 = dfa->mb_cur_max;\n      regexp.map_notascii = (byte)dfa->field_0x58 >> 3 & 1;\n      regexp.is_utf8 = (byte)dfa->field_0x58 >> 2 & 1;\n      regexp.raw_mbs = puVar13;\n      regexp.len = extraout_ECX;\n      regexp.trans = puVar5;\n      regexp.mb_cur_max = iVar29;\n      if (extraout_ECX != 0) {\n        aVar14.idx = re_string_realloc_buffers(&regexp,sVar39);\n        if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n        iVar29 = dfa->mb_cur_max;\n      }\n      if (regexp.mbs_allocated != '\0') {\n        puVar13 = regexp.mbs;\n      }\n      regexp.mbs = puVar13;\n      if (uVar28 == 0) {\n        if (iVar29 < 2) {\n          iVar29 = regexp.bufs_len;\n          regexp.valid_raw_len = regexp.bufs_len;\n          if (puVar5 != (uchar *)0x0) {\n            if (regexp.len <= regexp.bufs_len) {\n              regexp.bufs_len = regexp.len;\n            }\n            iVar29 = regexp.valid_len;\n            regexp.valid_raw_len = regexp.valid_len;\n            if (regexp.valid_len < regexp.bufs_len) {\n              puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n              iVar32 = regexp.valid_len + 1;\n              iVar29 = regexp.bufs_len;\n              regexp.valid_raw_len = regexp.bufs_len;\n              if (iVar32 < regexp.bufs_len) {\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }\n            }\n          }\n        }\n        else {\n          build_wcs_buffer(&regexp);\n          iVar29 = regexp.valid_len;\n        }\n      }\n      else {\n        if (1 < iVar29) {\n          do {\n            aVar14.idx = build_wcs_upper_buffer(&regexp);\n            if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n            iVar29 = regexp.valid_len;\n            if (((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;\n            rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2);\n          } while (rVar15 == _REG_NOERROR);\n          local_b0 = preg_00->buffer;\n          err = rVar15;\n          goto LAB_00027c60;\n        }\n        local_b0 = (re_dfa_t *)regexp.len;\n        if (regexp.bufs_len <= regexp.len) {\n          local_b0 = (re_dfa_t *)regexp.bufs_len;\n        }\n        if (regexp.valid_len < (int)local_b0) {\n          pp_Var25 = __ctype_toupper_loc();\n          while( true ) {\n            if (regexp.trans == (uchar *)0x0) {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n            }\n            else {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }\n            if (local_b0 == (re_dfa_t *)(regexp.valid_len + 1)) break;\n            regexp.valid_len = regexp.valid_len + 1;\n            puVar13 = regexp.mbs;\n          }\n        }\n        else {\n          local_b0 = (re_dfa_t *)regexp.valid_len;\n        }\n        regexp.valid_raw_len = (Idx)local_b0;\n        iVar29 = regexp.valid_raw_len;\n      }\nLAB_00027d86:\n      regexp.valid_len = iVar29;\n      err = _REG_NOERROR;\n      prVar7 = preg_00->buffer;\n      preg_00->re_nsub = 0;\n      prVar7->syntax = (reg_syntax_t)preg;\n      syntax_00 = 0x27db7;\n      iVar29 = peek_token(&current_token,&regexp,(uint)preg | 0x800000);\n      regexp.cur_idx = regexp.cur_idx + iVar29;\n      pbVar16 = parse_reg_exp((re_string_t *)preg,(regex_t *)0x0,(re_token_t *)&err,syntax_00,\n                              in_stack_ffffff44.idx,in_stack_ffffff48);\n      if ((err != _REG_NOERROR) && (pbVar16 == (bin_tree_t *)0x0)) {\n        dfa->str_tree = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        goto LAB_00027c60;\n      }\n      iVar29 = prVar7->str_tree_storage_idx;\n      if (iVar29 == 0x1f) {\n        pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n        if (pbVar26 != (bin_tree_storage_t *)0x0) {\n          iVar32 = 1;\n          iVar37 = 4;\n          iVar31 = 0x18;\n          pbVar26->next = prVar7->str_tree_storage;\n          iVar29 = 0;\n          prVar7->str_tree_storage = pbVar26;\n          goto LAB_00027e0d;\n        }\n        local_b0 = preg_00->buffer;\n        if (pbVar16 != (bin_tree_t *)0x0) {\n          pbVar43 = (bin_tree_t *)0x0;\n          bVar47 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        pbVar26 = prVar7->str_tree_storage;\n        iVar32 = iVar29 + 1;\n        iVar31 = iVar29 * 0x20 + 0x18;\n        iVar37 = iVar29 * 0x20 + 4;\nLAB_00027e0d:\n        prVar7->str_tree_storage_idx = iVar32;\n        pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].left = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].right = (bin_tree_t *)0x0;\n        *(undefined1 *)((int)&pbVar26->data[0].parent + iVar31) = 2;\n        puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n        *puVar2 = *puVar2 & 0xf3;\n        pbVar43 = (bin_tree_t *)((int)pbVar26->data + iVar37 + -4);\n        bVar47 = pbVar43 == (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].node_idx = -1;\n        pbVar22 = pbVar43;\n        if (pbVar16 != (bin_tree_t *)0x0) {\nLAB_00027e67:\n          iVar29 = prVar7->str_tree_storage_idx;\n          if (iVar29 == 0x1f) {\n            pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n            if (pbVar26 == (bin_tree_storage_t *)0x0) goto LAB_00028d28;\n            iVar32 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            pbVar26->next = prVar7->str_tree_storage;\n            iVar29 = 0;\n            prVar7->str_tree_storage = pbVar26;\n          }\n          else {\n            iVar32 = iVar29 + 1;\n            local_98 = iVar29 * 0x20 + 4;\n            local_94 = iVar29 * 0x20 + 0x18;\n            pbVar26 = prVar7->str_tree_storage;\n          }\n          prVar7->str_tree_storage_idx = iVar32;\n          pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n          pbVar22 = (bin_tree_t *)((int)pbVar26->data + local_98 + -4);\n          pbVar26->data[iVar29].left = pbVar16;\n          pbVar26->data[iVar29].right = pbVar43;\n          *(undefined1 *)((int)&pbVar26->data[0].parent + local_94) = 0x10;\n          puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n          *puVar2 = *puVar2 & 0xf3;\n          pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].node_idx = -1;\n          bVar47 = (bool)(bVar47 | pbVar22 == (bin_tree_t *)0x0);\n          pbVar16->parent = pbVar22;\n          if (pbVar43 != (bin_tree_t *)0x0) {\n            pbVar43->parent = pbVar22;\n          }\n        }\n        prVar7 = local_b0;\n        if (!bVar47) {\n          dfa->str_tree = pbVar22;\n          sVar11 = local_b0->nodes_alloc * 4;\n          __size = local_b0->nodes_alloc * 0xc;\n          pIVar17 = (Idx *)malloc(sVar11);\n          local_b0->nexts = pIVar17;\n          pIVar18 = (Idx *)malloc(sVar11);\n          local_b0->org_indices = pIVar18;\n          prVar19 = (re_node_set *)malloc(__size);\n          local_b0->edests = prVar19;\n          prVar20 = (re_node_set *)malloc(__size);\n          local_b0->eclosures = prVar20;\n          if ((((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0)) && (prVar20 != (re_node_set *)0x0)) {\n            sVar39 = preg_00->re_nsub;\n            __ptr = (size_t *)malloc(sVar39 * 4);\n            local_b0->subexp_map = (Idx *)__ptr;\n            pbVar16 = local_b0->str_tree;\n            if (__ptr != (size_t *)0x0) {\n              sVar33 = 0;\n              if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }\n              cVar27 = (pbVar16->token).field_0x4;\n              pbVar43 = pbVar16->left;\n              pbVar22 = pbVar16;\nLAB_00028010:\n              pbVar38 = pbVar22;\n              pbVar22 = pbVar43;\n              pbVar34 = pbVar22;\n              if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar27 != '\x11') goto joined_r0x00028003;\n              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          err = _REG_ESPACE;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      err = _REG_ESPACE;\n      dfa->str_tree = (bin_tree_t *)0x0;\n      goto LAB_00027c60;\n    }\n  }" { (expression_statement "sVar39 = extraout_ECX + 1;" (assignment_expression "sVar39 = extraout_ECX + 1" identifier = (binary_expression "extraout_ECX + 1" identifier + number_literal)) ;) (expression_statement "dfa->nodes_alloc = sVar39;" (assignment_expression "dfa->nodes_alloc = sVar39" (field_expression "dfa->nodes_alloc" identifier -> field_identifier) = identifier) ;) (expression_statement "prVar9 = (re_token_t *)malloc(sVar39 * 8);" (assignment_expression "prVar9 = (re_token_t *)malloc(sVar39 * 8)" identifier = (cast_expression "(re_token_t *)malloc(sVar39 * 8)" ( (type_descriptor "re_token_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar39 * 8)" identifier (argument_list "(sVar39 * 8)" ( (binary_expression "sVar39 * 8" identifier * number_literal) ))))) ;) (expression_statement "dfa->nodes = prVar9;" (assignment_expression "dfa->nodes = prVar9" (field_expression "dfa->nodes" identifier -> field_identifier) = identifier) ;) (if_statement "if (extraout_ECX == 0) {\n      rVar42 = 0;\n      uVar28 = 1;\n    }\n    else {\n      uVar28 = 1;\n      do {\n        uVar28 = uVar28 * 2;\n      } while (uVar28 <= extraout_ECX);\n      rVar42 = uVar28 - 1;\n    }" if (parenthesized_expression "(extraout_ECX == 0)" ( (binary_expression "extraout_ECX == 0" identifier == number_literal) )) (compound_statement "{\n      rVar42 = 0;\n      uVar28 = 1;\n    }" { (expression_statement "rVar42 = 0;" (assignment_expression "rVar42 = 0" identifier = number_literal) ;) (expression_statement "uVar28 = 1;" (assignment_expression "uVar28 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      uVar28 = 1;\n      do {\n        uVar28 = uVar28 * 2;\n      } while (uVar28 <= extraout_ECX);\n      rVar42 = uVar28 - 1;\n    }" else (compound_statement "{\n      uVar28 = 1;\n      do {\n        uVar28 = uVar28 * 2;\n      } while (uVar28 <= extraout_ECX);\n      rVar42 = uVar28 - 1;\n    }" { (expression_statement "uVar28 = 1;" (assignment_expression "uVar28 = 1" identifier = number_literal) ;) (do_statement "do {\n        uVar28 = uVar28 * 2;\n      } while (uVar28 <= extraout_ECX);" do (compound_statement "{\n        uVar28 = uVar28 * 2;\n      }" { (expression_statement "uVar28 = uVar28 * 2;" (assignment_expression "uVar28 = uVar28 * 2" identifier = (binary_expression "uVar28 * 2" identifier * number_literal)) ;) }) while (parenthesized_expression "(uVar28 <= extraout_ECX)" ( (binary_expression "uVar28 <= extraout_ECX" identifier <= identifier) )) ;) (expression_statement "rVar42 = uVar28 - 1;" (assignment_expression "rVar42 = uVar28 - 1" identifier = (binary_expression "uVar28 - 1" identifier - number_literal)) ;) }))) (expression_statement "prVar10 = (re_state_table_entry *)calloc(0xc,uVar28);" (assignment_expression "prVar10 = (re_state_table_entry *)calloc(0xc,uVar28)" identifier = (cast_expression "(re_state_table_entry *)calloc(0xc,uVar28)" ( (type_descriptor "re_state_table_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "calloc(0xc,uVar28)" identifier (argument_list "(0xc,uVar28)" ( number_literal , identifier ))))) ;) (expression_statement "dfa->state_hash_mask = rVar42;" (assignment_expression "dfa->state_hash_mask = rVar42" (field_expression "dfa->state_hash_mask" identifier -> field_identifier) = identifier) ;) (expression_statement "dfa->state_table = prVar10;" (assignment_expression "dfa->state_table = prVar10" (field_expression "dfa->state_table" identifier -> field_identifier) = identifier) ;) (expression_statement "sVar11 = __ctype_get_mb_cur_max();" (assignment_expression "sVar11 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;) (expression_statement "dfa->mb_cur_max = sVar11;" (assignment_expression "dfa->mb_cur_max = sVar11" (field_expression "dfa->mb_cur_max" identifier -> field_identifier) = identifier) ;) (expression_statement "pbVar12 = (byte *)nl_langinfo(0xe);" (assignment_expression "pbVar12 = (byte *)nl_langinfo(0xe)" identifier = (cast_expression "(byte *)nl_langinfo(0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "nl_langinfo(0xe)" identifier (argument_list "(0xe)" ( number_literal ))))) ;) (if_statement "if ((((*pbVar12 & 0xdf) == 0x55) && ((pbVar12[1] & 0xdf) == 0x54)) &&\n       ((pbVar12[2] & 0xdf) == 0x46)) {\n      bVar47 = pbVar12[3] < 0x2d;\n      bVar48 = pbVar12[3] == 0x2d;\n      iVar29 = 2;\n      pbVar12 = pbVar12 + bVar48 + 3;\n      pbVar45 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar29 == 0) break;\n        iVar29 = iVar29 + -1;\n        bVar47 = *pbVar12 < *pbVar45;\n        bVar48 = *pbVar12 == *pbVar45;\n        pbVar12 = pbVar12 + (uint)bVar49 * -2 + 1;\n        pbVar45 = pbVar45 + (uint)bVar49 * -2 + 1;\n      } while (bVar48);\n      if ((!bVar47 && !bVar48) == bVar47) {\n        dfa->field_0x58 = dfa->field_0x58 | 4;\n      }\n    }" if (parenthesized_expression "((((*pbVar12 & 0xdf) == 0x55) && ((pbVar12[1] & 0xdf) == 0x54)) &&\n       ((pbVar12[2] & 0xdf) == 0x46))" ( (binary_expression "(((*pbVar12 & 0xdf) == 0x55) && ((pbVar12[1] & 0xdf) == 0x54)) &&\n       ((pbVar12[2] & 0xdf) == 0x46)" (parenthesized_expression "(((*pbVar12 & 0xdf) == 0x55) && ((pbVar12[1] & 0xdf) == 0x54))" ( (binary_expression "((*pbVar12 & 0xdf) == 0x55) && ((pbVar12[1] & 0xdf) == 0x54)" (parenthesized_expression "((*pbVar12 & 0xdf) == 0x55)" ( (binary_expression "(*pbVar12 & 0xdf) == 0x55" (parenthesized_expression "(*pbVar12 & 0xdf)" ( (binary_expression "*pbVar12 & 0xdf" (pointer_expression "*pbVar12" * identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "((pbVar12[1] & 0xdf) == 0x54)" ( (binary_expression "(pbVar12[1] & 0xdf) == 0x54" (parenthesized_expression "(pbVar12[1] & 0xdf)" ( (binary_expression "pbVar12[1] & 0xdf" (subscript_expression "pbVar12[1]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((pbVar12[2] & 0xdf) == 0x46)" ( (binary_expression "(pbVar12[2] & 0xdf) == 0x46" (parenthesized_expression "(pbVar12[2] & 0xdf)" ( (binary_expression "pbVar12[2] & 0xdf" (subscript_expression "pbVar12[2]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      bVar47 = pbVar12[3] < 0x2d;\n      bVar48 = pbVar12[3] == 0x2d;\n      iVar29 = 2;\n      pbVar12 = pbVar12 + bVar48 + 3;\n      pbVar45 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar29 == 0) break;\n        iVar29 = iVar29 + -1;\n        bVar47 = *pbVar12 < *pbVar45;\n        bVar48 = *pbVar12 == *pbVar45;\n        pbVar12 = pbVar12 + (uint)bVar49 * -2 + 1;\n        pbVar45 = pbVar45 + (uint)bVar49 * -2 + 1;\n      } while (bVar48);\n      if ((!bVar47 && !bVar48) == bVar47) {\n        dfa->field_0x58 = dfa->field_0x58 | 4;\n      }\n    }" { (expression_statement "bVar47 = pbVar12[3] < 0x2d;" (assignment_expression "bVar47 = pbVar12[3] < 0x2d" identifier = (binary_expression "pbVar12[3] < 0x2d" (subscript_expression "pbVar12[3]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar48 = pbVar12[3] == 0x2d;" (assignment_expression "bVar48 = pbVar12[3] == 0x2d" identifier = (binary_expression "pbVar12[3] == 0x2d" (subscript_expression "pbVar12[3]" identifier [ number_literal ]) == number_literal)) ;) (expression_statement "iVar29 = 2;" (assignment_expression "iVar29 = 2" identifier = number_literal) ;) (expression_statement "pbVar12 = pbVar12 + bVar48 + 3;" (assignment_expression "pbVar12 = pbVar12 + bVar48 + 3" identifier = (binary_expression "pbVar12 + bVar48 + 3" (binary_expression "pbVar12 + bVar48" identifier + identifier) + number_literal)) ;) (expression_statement "pbVar45 = (byte *)(unaff_EDI + 0x504b);" (assignment_expression "pbVar45 = (byte *)(unaff_EDI + 0x504b)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x504b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x504b)" ( (binary_expression "unaff_EDI + 0x504b" identifier + number_literal) )))) ;) (do_statement "do {\n        if (iVar29 == 0) break;\n        iVar29 = iVar29 + -1;\n        bVar47 = *pbVar12 < *pbVar45;\n        bVar48 = *pbVar12 == *pbVar45;\n        pbVar12 = pbVar12 + (uint)bVar49 * -2 + 1;\n        pbVar45 = pbVar45 + (uint)bVar49 * -2 + 1;\n      } while (bVar48);" do (compound_statement "{\n        if (iVar29 == 0) break;\n        iVar29 = iVar29 + -1;\n        bVar47 = *pbVar12 < *pbVar45;\n        bVar48 = *pbVar12 == *pbVar45;\n        pbVar12 = pbVar12 + (uint)bVar49 * -2 + 1;\n        pbVar45 = pbVar45 + (uint)bVar49 * -2 + 1;\n      }" { (if_statement "if (iVar29 == 0) break;" if (parenthesized_expression "(iVar29 == 0)" ( (binary_expression "iVar29 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar29 = iVar29 + -1;" (assignment_expression "iVar29 = iVar29 + -1" identifier = (binary_expression "iVar29 + -1" identifier + number_literal)) ;) (expression_statement "bVar47 = *pbVar12 < *pbVar45;" (assignment_expression "bVar47 = *pbVar12 < *pbVar45" identifier = (binary_expression "*pbVar12 < *pbVar45" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar45" * identifier))) ;) (expression_statement "bVar48 = *pbVar12 == *pbVar45;" (assignment_expression "bVar48 = *pbVar12 == *pbVar45" identifier = (binary_expression "*pbVar12 == *pbVar45" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar45" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar49 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar49 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar49 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar49 * -2" identifier + (binary_expression "(uint)bVar49 * -2" (cast_expression "(uint)bVar49" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar45 = pbVar45 + (uint)bVar49 * -2 + 1;" (assignment_expression "pbVar45 = pbVar45 + (uint)bVar49 * -2 + 1" identifier = (binary_expression "pbVar45 + (uint)bVar49 * -2 + 1" (binary_expression "pbVar45 + (uint)bVar49 * -2" identifier + (binary_expression "(uint)bVar49 * -2" (cast_expression "(uint)bVar49" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar48)" ( identifier )) ;) (if_statement "if ((!bVar47 && !bVar48) == bVar47) {\n        dfa->field_0x58 = dfa->field_0x58 | 4;\n      }" if (parenthesized_expression "((!bVar47 && !bVar48) == bVar47)" ( (binary_expression "(!bVar47 && !bVar48) == bVar47" (parenthesized_expression "(!bVar47 && !bVar48)" ( (binary_expression "!bVar47 && !bVar48" (unary_expression "!bVar47" ! identifier) && (unary_expression "!bVar48" ! identifier)) )) == identifier) )) (compound_statement "{\n        dfa->field_0x58 = dfa->field_0x58 | 4;\n      }" { (expression_statement "dfa->field_0x58 = dfa->field_0x58 | 4;" (assignment_expression "dfa->field_0x58 = dfa->field_0x58 | 4" (field_expression "dfa->field_0x58" identifier -> field_identifier) = (binary_expression "dfa->field_0x58 | 4" (field_expression "dfa->field_0x58" identifier -> field_identifier) | number_literal)) ;) })) })) (expression_statement "bVar3 = dfa->field_0x58;" (assignment_expression "bVar3 = dfa->field_0x58" identifier = (field_expression "dfa->field_0x58" identifier -> field_identifier)) ;) (expression_statement "dfa->field_0x58 = bVar3 & 0xf7;" (assignment_expression "dfa->field_0x58 = bVar3 & 0xf7" (field_expression "dfa->field_0x58" identifier -> field_identifier) = (binary_expression "bVar3 & 0xf7" identifier & number_literal)) ;) (if_statement "if (1 < dfa->mb_cur_max) {\n      if ((bVar3 & 4) == 0) {\n        pbVar35 = (re_bitset_ptr_t)calloc(0x20,1);\n        dfa->sb_char = pbVar35;\n        if (pbVar35 == (re_bitset_ptr_t)0x0) goto LAB_000282d0;\n        iVar29 = 0;\n        do {\n          uVar28 = iVar29 * 8;\n          iVar32 = 0;\n          do {\n            while( true ) {\n              wVar23 = btowc(uVar28);\n              if (wVar23 != 0xffffffff) break;\n              if ((uVar28 & 0xffffff80) == 0) {\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }\nLAB_00028404:\n              iVar32 = iVar32 + 1;\n              uVar28 = uVar28 + 1;\n              if (iVar32 == 0x20) goto LAB_00028460;\n            }\n            puVar36 = (uint *)((int)dfa->sb_char + iVar29);\n            *puVar36 = *puVar36 | 1 << ((byte)iVar32 & 0x1f);\n            if ((uVar28 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar23 != uVar28) goto LAB_000283fc;\n            iVar32 = iVar32 + 1;\n            uVar28 = uVar28 + 1;\n          } while (iVar32 != 0x20);\nLAB_00028460:\n          iVar29 = iVar29 + 4;\n        } while (iVar29 != 0x20);\n      }\n      else {\n        dfa->sb_char = (re_bitset_ptr_t)(unaff_EDI + 0x58c9);\n      }\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      if ((bVar3 & 4) == 0) {\n        pbVar35 = (re_bitset_ptr_t)calloc(0x20,1);\n        dfa->sb_char = pbVar35;\n        if (pbVar35 == (re_bitset_ptr_t)0x0) goto LAB_000282d0;\n        iVar29 = 0;\n        do {\n          uVar28 = iVar29 * 8;\n          iVar32 = 0;\n          do {\n            while( true ) {\n              wVar23 = btowc(uVar28);\n              if (wVar23 != 0xffffffff) break;\n              if ((uVar28 & 0xffffff80) == 0) {\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }\nLAB_00028404:\n              iVar32 = iVar32 + 1;\n              uVar28 = uVar28 + 1;\n              if (iVar32 == 0x20) goto LAB_00028460;\n            }\n            puVar36 = (uint *)((int)dfa->sb_char + iVar29);\n            *puVar36 = *puVar36 | 1 << ((byte)iVar32 & 0x1f);\n            if ((uVar28 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar23 != uVar28) goto LAB_000283fc;\n            iVar32 = iVar32 + 1;\n            uVar28 = uVar28 + 1;\n          } while (iVar32 != 0x20);\nLAB_00028460:\n          iVar29 = iVar29 + 4;\n        } while (iVar29 != 0x20);\n      }\n      else {\n        dfa->sb_char = (re_bitset_ptr_t)(unaff_EDI + 0x58c9);\n      }\n    }" { (if_statement "if ((bVar3 & 4) == 0) {\n        pbVar35 = (re_bitset_ptr_t)calloc(0x20,1);\n        dfa->sb_char = pbVar35;\n        if (pbVar35 == (re_bitset_ptr_t)0x0) goto LAB_000282d0;\n        iVar29 = 0;\n        do {\n          uVar28 = iVar29 * 8;\n          iVar32 = 0;\n          do {\n            while( true ) {\n              wVar23 = btowc(uVar28);\n              if (wVar23 != 0xffffffff) break;\n              if ((uVar28 & 0xffffff80) == 0) {\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }\nLAB_00028404:\n              iVar32 = iVar32 + 1;\n              uVar28 = uVar28 + 1;\n              if (iVar32 == 0x20) goto LAB_00028460;\n            }\n            puVar36 = (uint *)((int)dfa->sb_char + iVar29);\n            *puVar36 = *puVar36 | 1 << ((byte)iVar32 & 0x1f);\n            if ((uVar28 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar23 != uVar28) goto LAB_000283fc;\n            iVar32 = iVar32 + 1;\n            uVar28 = uVar28 + 1;\n          } while (iVar32 != 0x20);\nLAB_00028460:\n          iVar29 = iVar29 + 4;\n        } while (iVar29 != 0x20);\n      }\n      else {\n        dfa->sb_char = (re_bitset_ptr_t)(unaff_EDI + 0x58c9);\n      }" if (parenthesized_expression "((bVar3 & 4) == 0)" ( (binary_expression "(bVar3 & 4) == 0" (parenthesized_expression "(bVar3 & 4)" ( (binary_expression "bVar3 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        pbVar35 = (re_bitset_ptr_t)calloc(0x20,1);\n        dfa->sb_char = pbVar35;\n        if (pbVar35 == (re_bitset_ptr_t)0x0) goto LAB_000282d0;\n        iVar29 = 0;\n        do {\n          uVar28 = iVar29 * 8;\n          iVar32 = 0;\n          do {\n            while( true ) {\n              wVar23 = btowc(uVar28);\n              if (wVar23 != 0xffffffff) break;\n              if ((uVar28 & 0xffffff80) == 0) {\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }\nLAB_00028404:\n              iVar32 = iVar32 + 1;\n              uVar28 = uVar28 + 1;\n              if (iVar32 == 0x20) goto LAB_00028460;\n            }\n            puVar36 = (uint *)((int)dfa->sb_char + iVar29);\n            *puVar36 = *puVar36 | 1 << ((byte)iVar32 & 0x1f);\n            if ((uVar28 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar23 != uVar28) goto LAB_000283fc;\n            iVar32 = iVar32 + 1;\n            uVar28 = uVar28 + 1;\n          } while (iVar32 != 0x20);\nLAB_00028460:\n          iVar29 = iVar29 + 4;\n        } while (iVar29 != 0x20);\n      }" { (expression_statement "pbVar35 = (re_bitset_ptr_t)calloc(0x20,1);" (assignment_expression "pbVar35 = (re_bitset_ptr_t)calloc(0x20,1)" identifier = (cast_expression "(re_bitset_ptr_t)calloc(0x20,1)" ( (type_descriptor "re_bitset_ptr_t" type_identifier) ) (call_expression "calloc(0x20,1)" identifier (argument_list "(0x20,1)" ( number_literal , number_literal ))))) ;) (expression_statement "dfa->sb_char = pbVar35;" (assignment_expression "dfa->sb_char = pbVar35" (field_expression "dfa->sb_char" identifier -> field_identifier) = identifier) ;) (if_statement "if (pbVar35 == (re_bitset_ptr_t)0x0) goto LAB_000282d0;" if (parenthesized_expression "(pbVar35 == (re_bitset_ptr_t)0x0)" ( (binary_expression "pbVar35 == (re_bitset_ptr_t)0x0" identifier == (cast_expression "(re_bitset_ptr_t)0x0" ( (type_descriptor "re_bitset_ptr_t" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_000282d0;" goto statement_identifier ;)) (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar28 = iVar29 * 8;\n          iVar32 = 0;\n          do {\n            while( true ) {\n              wVar23 = btowc(uVar28);\n              if (wVar23 != 0xffffffff) break;\n              if ((uVar28 & 0xffffff80) == 0) {\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }\nLAB_00028404:\n              iVar32 = iVar32 + 1;\n              uVar28 = uVar28 + 1;\n              if (iVar32 == 0x20) goto LAB_00028460;\n            }\n            puVar36 = (uint *)((int)dfa->sb_char + iVar29);\n            *puVar36 = *puVar36 | 1 << ((byte)iVar32 & 0x1f);\n            if ((uVar28 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar23 != uVar28) goto LAB_000283fc;\n            iVar32 = iVar32 + 1;\n            uVar28 = uVar28 + 1;\n          } while (iVar32 != 0x20);\nLAB_00028460:\n          iVar29 = iVar29 + 4;\n        } while (iVar29 != 0x20);" do (compound_statement "{\n          uVar28 = iVar29 * 8;\n          iVar32 = 0;\n          do {\n            while( true ) {\n              wVar23 = btowc(uVar28);\n              if (wVar23 != 0xffffffff) break;\n              if ((uVar28 & 0xffffff80) == 0) {\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }\nLAB_00028404:\n              iVar32 = iVar32 + 1;\n              uVar28 = uVar28 + 1;\n              if (iVar32 == 0x20) goto LAB_00028460;\n            }\n            puVar36 = (uint *)((int)dfa->sb_char + iVar29);\n            *puVar36 = *puVar36 | 1 << ((byte)iVar32 & 0x1f);\n            if ((uVar28 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar23 != uVar28) goto LAB_000283fc;\n            iVar32 = iVar32 + 1;\n            uVar28 = uVar28 + 1;\n          } while (iVar32 != 0x20);\nLAB_00028460:\n          iVar29 = iVar29 + 4;\n        }" { (expression_statement "uVar28 = iVar29 * 8;" (assignment_expression "uVar28 = iVar29 * 8" identifier = (binary_expression "iVar29 * 8" identifier * number_literal)) ;) (expression_statement "iVar32 = 0;" (assignment_expression "iVar32 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              wVar23 = btowc(uVar28);\n              if (wVar23 != 0xffffffff) break;\n              if ((uVar28 & 0xffffff80) == 0) {\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }\nLAB_00028404:\n              iVar32 = iVar32 + 1;\n              uVar28 = uVar28 + 1;\n              if (iVar32 == 0x20) goto LAB_00028460;\n            }\n            puVar36 = (uint *)((int)dfa->sb_char + iVar29);\n            *puVar36 = *puVar36 | 1 << ((byte)iVar32 & 0x1f);\n            if ((uVar28 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar23 != uVar28) goto LAB_000283fc;\n            iVar32 = iVar32 + 1;\n            uVar28 = uVar28 + 1;\n          } while (iVar32 != 0x20);" do (compound_statement "{\n            while( true ) {\n              wVar23 = btowc(uVar28);\n              if (wVar23 != 0xffffffff) break;\n              if ((uVar28 & 0xffffff80) == 0) {\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }\nLAB_00028404:\n              iVar32 = iVar32 + 1;\n              uVar28 = uVar28 + 1;\n              if (iVar32 == 0x20) goto LAB_00028460;\n            }\n            puVar36 = (uint *)((int)dfa->sb_char + iVar29);\n            *puVar36 = *puVar36 | 1 << ((byte)iVar32 & 0x1f);\n            if ((uVar28 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar23 != uVar28) goto LAB_000283fc;\n            iVar32 = iVar32 + 1;\n            uVar28 = uVar28 + 1;\n          }" { (while_statement "while( true ) {\n              wVar23 = btowc(uVar28);\n              if (wVar23 != 0xffffffff) break;\n              if ((uVar28 & 0xffffff80) == 0) {\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }\nLAB_00028404:\n              iVar32 = iVar32 + 1;\n              uVar28 = uVar28 + 1;\n              if (iVar32 == 0x20) goto LAB_00028460;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              wVar23 = btowc(uVar28);\n              if (wVar23 != 0xffffffff) break;\n              if ((uVar28 & 0xffffff80) == 0) {\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }\nLAB_00028404:\n              iVar32 = iVar32 + 1;\n              uVar28 = uVar28 + 1;\n              if (iVar32 == 0x20) goto LAB_00028460;\n            }" { (expression_statement "wVar23 = btowc(uVar28);" (assignment_expression "wVar23 = btowc(uVar28)" identifier = (call_expression "btowc(uVar28)" identifier (argument_list "(uVar28)" ( identifier )))) ;) (if_statement "if (wVar23 != 0xffffffff) break;" if (parenthesized_expression "(wVar23 != 0xffffffff)" ( (binary_expression "wVar23 != 0xffffffff" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if ((uVar28 & 0xffffff80) == 0) {\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }" if (parenthesized_expression "((uVar28 & 0xffffff80) == 0)" ( (binary_expression "(uVar28 & 0xffffff80) == 0" (parenthesized_expression "(uVar28 & 0xffffff80)" ( (binary_expression "uVar28 & 0xffffff80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;\n              }" { (labeled_statement "LAB_000283fc:\n                dfa->field_0x58 = dfa->field_0x58 | 8;" statement_identifier : (expression_statement "dfa->field_0x58 = dfa->field_0x58 | 8;" (assignment_expression "dfa->field_0x58 = dfa->field_0x58 | 8" (field_expression "dfa->field_0x58" identifier -> field_identifier) = (binary_expression "dfa->field_0x58 | 8" (field_expression "dfa->field_0x58" identifier -> field_identifier) | number_literal)) ;)) })) (labeled_statement "LAB_00028404:\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 "uVar28 = uVar28 + 1;" (assignment_expression "uVar28 = uVar28 + 1" identifier = (binary_expression "uVar28 + 1" identifier + number_literal)) ;) (if_statement "if (iVar32 == 0x20) goto LAB_00028460;" if (parenthesized_expression "(iVar32 == 0x20)" ( (binary_expression "iVar32 == 0x20" identifier == number_literal) )) (goto_statement "goto LAB_00028460;" goto statement_identifier ;)) })) (expression_statement "puVar36 = (uint *)((int)dfa->sb_char + iVar29);" (assignment_expression "puVar36 = (uint *)((int)dfa->sb_char + iVar29)" identifier = (cast_expression "(uint *)((int)dfa->sb_char + iVar29)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)dfa->sb_char + iVar29)" ( (binary_expression "(int)dfa->sb_char + iVar29" (cast_expression "(int)dfa->sb_char" ( (type_descriptor "int" primitive_type) ) (field_expression "dfa->sb_char" identifier -> field_identifier)) + identifier) )))) ;) (expression_statement "*puVar36 = *puVar36 | 1 << ((byte)iVar32 & 0x1f);" (assignment_expression "*puVar36 = *puVar36 | 1 << ((byte)iVar32 & 0x1f)" (pointer_expression "*puVar36" * identifier) = (binary_expression "*puVar36 | 1 << ((byte)iVar32 & 0x1f)" (pointer_expression "*puVar36" * identifier) | (binary_expression "1 << ((byte)iVar32 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar32 & 0x1f)" ( (binary_expression "(byte)iVar32 & 0x1f" (cast_expression "(byte)iVar32" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (if_statement "if ((uVar28 & 0xffffff80) != 0) goto LAB_00028404;" if (parenthesized_expression "((uVar28 & 0xffffff80) != 0)" ( (binary_expression "(uVar28 & 0xffffff80) != 0" (parenthesized_expression "(uVar28 & 0xffffff80)" ( (binary_expression "uVar28 & 0xffffff80" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00028404;" goto statement_identifier ;)) (if_statement "if (wVar23 != uVar28) goto LAB_000283fc;" if (parenthesized_expression "(wVar23 != uVar28)" ( (binary_expression "wVar23 != uVar28" identifier != identifier) )) (goto_statement "goto LAB_000283fc;" goto statement_identifier ;)) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (expression_statement "uVar28 = uVar28 + 1;" (assignment_expression "uVar28 = uVar28 + 1" identifier = (binary_expression "uVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar32 != 0x20)" ( (binary_expression "iVar32 != 0x20" identifier != number_literal) )) ;) (labeled_statement "LAB_00028460:\n          iVar29 = iVar29 + 4;" statement_identifier : (expression_statement "iVar29 = iVar29 + 4;" (assignment_expression "iVar29 = iVar29 + 4" identifier = (binary_expression "iVar29 + 4" identifier + number_literal)) ;)) }) while (parenthesized_expression "(iVar29 != 0x20)" ( (binary_expression "iVar29 != 0x20" identifier != number_literal) )) ;) }) (else_clause "else {\n        dfa->sb_char = (re_bitset_ptr_t)(unaff_EDI + 0x58c9);\n      }" else (compound_statement "{\n        dfa->sb_char = (re_bitset_ptr_t)(unaff_EDI + 0x58c9);\n      }" { (expression_statement "dfa->sb_char = (re_bitset_ptr_t)(unaff_EDI + 0x58c9);" (assignment_expression "dfa->sb_char = (re_bitset_ptr_t)(unaff_EDI + 0x58c9)" (field_expression "dfa->sb_char" identifier -> field_identifier) = (call_expression "(re_bitset_ptr_t)(unaff_EDI + 0x58c9)" (parenthesized_expression "(re_bitset_ptr_t)" ( identifier )) (argument_list "(unaff_EDI + 0x58c9)" ( (binary_expression "unaff_EDI + 0x58c9" identifier + number_literal) )))) ;) }))) })) (if_statement "if ((dfa->nodes != (re_token_t *)0x0) && (dfa->state_table != (re_state_table_entry *)0x0)) {\n      err = _REG_NOERROR;\n      puVar5 = preg_00->translate;\n      ppuVar46 = &regexp.mbs;\n      for (iVar29 = 0x13; iVar29 != 0; iVar29 = iVar29 + -1) {\n        *ppuVar46 = (uchar *)0x0;\n        ppuVar46 = ppuVar46 + (uint)bVar49 * -2 + 1;\n      }\n      uVar28 = (uint)preg & 0x400000;\n      regexp.icase = uVar28 != 0;\n      regexp.mbs_allocated = puVar5 != (uchar *)0x0 || uVar28 != 0;\n      iVar29 = dfa->mb_cur_max;\n      regexp.map_notascii = (byte)dfa->field_0x58 >> 3 & 1;\n      regexp.is_utf8 = (byte)dfa->field_0x58 >> 2 & 1;\n      regexp.raw_mbs = puVar13;\n      regexp.len = extraout_ECX;\n      regexp.trans = puVar5;\n      regexp.mb_cur_max = iVar29;\n      if (extraout_ECX != 0) {\n        aVar14.idx = re_string_realloc_buffers(&regexp,sVar39);\n        if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n        iVar29 = dfa->mb_cur_max;\n      }\n      if (regexp.mbs_allocated != '\0') {\n        puVar13 = regexp.mbs;\n      }\n      regexp.mbs = puVar13;\n      if (uVar28 == 0) {\n        if (iVar29 < 2) {\n          iVar29 = regexp.bufs_len;\n          regexp.valid_raw_len = regexp.bufs_len;\n          if (puVar5 != (uchar *)0x0) {\n            if (regexp.len <= regexp.bufs_len) {\n              regexp.bufs_len = regexp.len;\n            }\n            iVar29 = regexp.valid_len;\n            regexp.valid_raw_len = regexp.valid_len;\n            if (regexp.valid_len < regexp.bufs_len) {\n              puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n              iVar32 = regexp.valid_len + 1;\n              iVar29 = regexp.bufs_len;\n              regexp.valid_raw_len = regexp.bufs_len;\n              if (iVar32 < regexp.bufs_len) {\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }\n            }\n          }\n        }\n        else {\n          build_wcs_buffer(&regexp);\n          iVar29 = regexp.valid_len;\n        }\n      }\n      else {\n        if (1 < iVar29) {\n          do {\n            aVar14.idx = build_wcs_upper_buffer(&regexp);\n            if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n            iVar29 = regexp.valid_len;\n            if (((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;\n            rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2);\n          } while (rVar15 == _REG_NOERROR);\n          local_b0 = preg_00->buffer;\n          err = rVar15;\n          goto LAB_00027c60;\n        }\n        local_b0 = (re_dfa_t *)regexp.len;\n        if (regexp.bufs_len <= regexp.len) {\n          local_b0 = (re_dfa_t *)regexp.bufs_len;\n        }\n        if (regexp.valid_len < (int)local_b0) {\n          pp_Var25 = __ctype_toupper_loc();\n          while( true ) {\n            if (regexp.trans == (uchar *)0x0) {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n            }\n            else {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }\n            if (local_b0 == (re_dfa_t *)(regexp.valid_len + 1)) break;\n            regexp.valid_len = regexp.valid_len + 1;\n            puVar13 = regexp.mbs;\n          }\n        }\n        else {\n          local_b0 = (re_dfa_t *)regexp.valid_len;\n        }\n        regexp.valid_raw_len = (Idx)local_b0;\n        iVar29 = regexp.valid_raw_len;\n      }\nLAB_00027d86:\n      regexp.valid_len = iVar29;\n      err = _REG_NOERROR;\n      prVar7 = preg_00->buffer;\n      preg_00->re_nsub = 0;\n      prVar7->syntax = (reg_syntax_t)preg;\n      syntax_00 = 0x27db7;\n      iVar29 = peek_token(&current_token,&regexp,(uint)preg | 0x800000);\n      regexp.cur_idx = regexp.cur_idx + iVar29;\n      pbVar16 = parse_reg_exp((re_string_t *)preg,(regex_t *)0x0,(re_token_t *)&err,syntax_00,\n                              in_stack_ffffff44.idx,in_stack_ffffff48);\n      if ((err != _REG_NOERROR) && (pbVar16 == (bin_tree_t *)0x0)) {\n        dfa->str_tree = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        goto LAB_00027c60;\n      }\n      iVar29 = prVar7->str_tree_storage_idx;\n      if (iVar29 == 0x1f) {\n        pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n        if (pbVar26 != (bin_tree_storage_t *)0x0) {\n          iVar32 = 1;\n          iVar37 = 4;\n          iVar31 = 0x18;\n          pbVar26->next = prVar7->str_tree_storage;\n          iVar29 = 0;\n          prVar7->str_tree_storage = pbVar26;\n          goto LAB_00027e0d;\n        }\n        local_b0 = preg_00->buffer;\n        if (pbVar16 != (bin_tree_t *)0x0) {\n          pbVar43 = (bin_tree_t *)0x0;\n          bVar47 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        pbVar26 = prVar7->str_tree_storage;\n        iVar32 = iVar29 + 1;\n        iVar31 = iVar29 * 0x20 + 0x18;\n        iVar37 = iVar29 * 0x20 + 4;\nLAB_00027e0d:\n        prVar7->str_tree_storage_idx = iVar32;\n        pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].left = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].right = (bin_tree_t *)0x0;\n        *(undefined1 *)((int)&pbVar26->data[0].parent + iVar31) = 2;\n        puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n        *puVar2 = *puVar2 & 0xf3;\n        pbVar43 = (bin_tree_t *)((int)pbVar26->data + iVar37 + -4);\n        bVar47 = pbVar43 == (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].node_idx = -1;\n        pbVar22 = pbVar43;\n        if (pbVar16 != (bin_tree_t *)0x0) {\nLAB_00027e67:\n          iVar29 = prVar7->str_tree_storage_idx;\n          if (iVar29 == 0x1f) {\n            pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n            if (pbVar26 == (bin_tree_storage_t *)0x0) goto LAB_00028d28;\n            iVar32 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            pbVar26->next = prVar7->str_tree_storage;\n            iVar29 = 0;\n            prVar7->str_tree_storage = pbVar26;\n          }\n          else {\n            iVar32 = iVar29 + 1;\n            local_98 = iVar29 * 0x20 + 4;\n            local_94 = iVar29 * 0x20 + 0x18;\n            pbVar26 = prVar7->str_tree_storage;\n          }\n          prVar7->str_tree_storage_idx = iVar32;\n          pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n          pbVar22 = (bin_tree_t *)((int)pbVar26->data + local_98 + -4);\n          pbVar26->data[iVar29].left = pbVar16;\n          pbVar26->data[iVar29].right = pbVar43;\n          *(undefined1 *)((int)&pbVar26->data[0].parent + local_94) = 0x10;\n          puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n          *puVar2 = *puVar2 & 0xf3;\n          pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].node_idx = -1;\n          bVar47 = (bool)(bVar47 | pbVar22 == (bin_tree_t *)0x0);\n          pbVar16->parent = pbVar22;\n          if (pbVar43 != (bin_tree_t *)0x0) {\n            pbVar43->parent = pbVar22;\n          }\n        }\n        prVar7 = local_b0;\n        if (!bVar47) {\n          dfa->str_tree = pbVar22;\n          sVar11 = local_b0->nodes_alloc * 4;\n          __size = local_b0->nodes_alloc * 0xc;\n          pIVar17 = (Idx *)malloc(sVar11);\n          local_b0->nexts = pIVar17;\n          pIVar18 = (Idx *)malloc(sVar11);\n          local_b0->org_indices = pIVar18;\n          prVar19 = (re_node_set *)malloc(__size);\n          local_b0->edests = prVar19;\n          prVar20 = (re_node_set *)malloc(__size);\n          local_b0->eclosures = prVar20;\n          if ((((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0)) && (prVar20 != (re_node_set *)0x0)) {\n            sVar39 = preg_00->re_nsub;\n            __ptr = (size_t *)malloc(sVar39 * 4);\n            local_b0->subexp_map = (Idx *)__ptr;\n            pbVar16 = local_b0->str_tree;\n            if (__ptr != (size_t *)0x0) {\n              sVar33 = 0;\n              if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }\n              cVar27 = (pbVar16->token).field_0x4;\n              pbVar43 = pbVar16->left;\n              pbVar22 = pbVar16;\nLAB_00028010:\n              pbVar38 = pbVar22;\n              pbVar22 = pbVar43;\n              pbVar34 = pbVar22;\n              if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar27 != '\x11') goto joined_r0x00028003;\n              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          err = _REG_ESPACE;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      err = _REG_ESPACE;\n      dfa->str_tree = (bin_tree_t *)0x0;\n      goto LAB_00027c60;\n    }" if (parenthesized_expression "((dfa->nodes != (re_token_t *)0x0) && (dfa->state_table != (re_state_table_entry *)0x0))" ( (binary_expression "(dfa->nodes != (re_token_t *)0x0) && (dfa->state_table != (re_state_table_entry *)0x0)" (parenthesized_expression "(dfa->nodes != (re_token_t *)0x0)" ( (binary_expression "dfa->nodes != (re_token_t *)0x0" (field_expression "dfa->nodes" identifier -> field_identifier) != (cast_expression "(re_token_t *)0x0" ( (type_descriptor "re_token_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(dfa->state_table != (re_state_table_entry *)0x0)" ( (binary_expression "dfa->state_table != (re_state_table_entry *)0x0" (field_expression "dfa->state_table" identifier -> field_identifier) != (cast_expression "(re_state_table_entry *)0x0" ( (type_descriptor "re_state_table_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      err = _REG_NOERROR;\n      puVar5 = preg_00->translate;\n      ppuVar46 = &regexp.mbs;\n      for (iVar29 = 0x13; iVar29 != 0; iVar29 = iVar29 + -1) {\n        *ppuVar46 = (uchar *)0x0;\n        ppuVar46 = ppuVar46 + (uint)bVar49 * -2 + 1;\n      }\n      uVar28 = (uint)preg & 0x400000;\n      regexp.icase = uVar28 != 0;\n      regexp.mbs_allocated = puVar5 != (uchar *)0x0 || uVar28 != 0;\n      iVar29 = dfa->mb_cur_max;\n      regexp.map_notascii = (byte)dfa->field_0x58 >> 3 & 1;\n      regexp.is_utf8 = (byte)dfa->field_0x58 >> 2 & 1;\n      regexp.raw_mbs = puVar13;\n      regexp.len = extraout_ECX;\n      regexp.trans = puVar5;\n      regexp.mb_cur_max = iVar29;\n      if (extraout_ECX != 0) {\n        aVar14.idx = re_string_realloc_buffers(&regexp,sVar39);\n        if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n        iVar29 = dfa->mb_cur_max;\n      }\n      if (regexp.mbs_allocated != '\0') {\n        puVar13 = regexp.mbs;\n      }\n      regexp.mbs = puVar13;\n      if (uVar28 == 0) {\n        if (iVar29 < 2) {\n          iVar29 = regexp.bufs_len;\n          regexp.valid_raw_len = regexp.bufs_len;\n          if (puVar5 != (uchar *)0x0) {\n            if (regexp.len <= regexp.bufs_len) {\n              regexp.bufs_len = regexp.len;\n            }\n            iVar29 = regexp.valid_len;\n            regexp.valid_raw_len = regexp.valid_len;\n            if (regexp.valid_len < regexp.bufs_len) {\n              puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n              iVar32 = regexp.valid_len + 1;\n              iVar29 = regexp.bufs_len;\n              regexp.valid_raw_len = regexp.bufs_len;\n              if (iVar32 < regexp.bufs_len) {\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }\n            }\n          }\n        }\n        else {\n          build_wcs_buffer(&regexp);\n          iVar29 = regexp.valid_len;\n        }\n      }\n      else {\n        if (1 < iVar29) {\n          do {\n            aVar14.idx = build_wcs_upper_buffer(&regexp);\n            if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n            iVar29 = regexp.valid_len;\n            if (((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;\n            rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2);\n          } while (rVar15 == _REG_NOERROR);\n          local_b0 = preg_00->buffer;\n          err = rVar15;\n          goto LAB_00027c60;\n        }\n        local_b0 = (re_dfa_t *)regexp.len;\n        if (regexp.bufs_len <= regexp.len) {\n          local_b0 = (re_dfa_t *)regexp.bufs_len;\n        }\n        if (regexp.valid_len < (int)local_b0) {\n          pp_Var25 = __ctype_toupper_loc();\n          while( true ) {\n            if (regexp.trans == (uchar *)0x0) {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n            }\n            else {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }\n            if (local_b0 == (re_dfa_t *)(regexp.valid_len + 1)) break;\n            regexp.valid_len = regexp.valid_len + 1;\n            puVar13 = regexp.mbs;\n          }\n        }\n        else {\n          local_b0 = (re_dfa_t *)regexp.valid_len;\n        }\n        regexp.valid_raw_len = (Idx)local_b0;\n        iVar29 = regexp.valid_raw_len;\n      }\nLAB_00027d86:\n      regexp.valid_len = iVar29;\n      err = _REG_NOERROR;\n      prVar7 = preg_00->buffer;\n      preg_00->re_nsub = 0;\n      prVar7->syntax = (reg_syntax_t)preg;\n      syntax_00 = 0x27db7;\n      iVar29 = peek_token(&current_token,&regexp,(uint)preg | 0x800000);\n      regexp.cur_idx = regexp.cur_idx + iVar29;\n      pbVar16 = parse_reg_exp((re_string_t *)preg,(regex_t *)0x0,(re_token_t *)&err,syntax_00,\n                              in_stack_ffffff44.idx,in_stack_ffffff48);\n      if ((err != _REG_NOERROR) && (pbVar16 == (bin_tree_t *)0x0)) {\n        dfa->str_tree = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        goto LAB_00027c60;\n      }\n      iVar29 = prVar7->str_tree_storage_idx;\n      if (iVar29 == 0x1f) {\n        pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n        if (pbVar26 != (bin_tree_storage_t *)0x0) {\n          iVar32 = 1;\n          iVar37 = 4;\n          iVar31 = 0x18;\n          pbVar26->next = prVar7->str_tree_storage;\n          iVar29 = 0;\n          prVar7->str_tree_storage = pbVar26;\n          goto LAB_00027e0d;\n        }\n        local_b0 = preg_00->buffer;\n        if (pbVar16 != (bin_tree_t *)0x0) {\n          pbVar43 = (bin_tree_t *)0x0;\n          bVar47 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        pbVar26 = prVar7->str_tree_storage;\n        iVar32 = iVar29 + 1;\n        iVar31 = iVar29 * 0x20 + 0x18;\n        iVar37 = iVar29 * 0x20 + 4;\nLAB_00027e0d:\n        prVar7->str_tree_storage_idx = iVar32;\n        pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].left = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].right = (bin_tree_t *)0x0;\n        *(undefined1 *)((int)&pbVar26->data[0].parent + iVar31) = 2;\n        puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n        *puVar2 = *puVar2 & 0xf3;\n        pbVar43 = (bin_tree_t *)((int)pbVar26->data + iVar37 + -4);\n        bVar47 = pbVar43 == (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].node_idx = -1;\n        pbVar22 = pbVar43;\n        if (pbVar16 != (bin_tree_t *)0x0) {\nLAB_00027e67:\n          iVar29 = prVar7->str_tree_storage_idx;\n          if (iVar29 == 0x1f) {\n            pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n            if (pbVar26 == (bin_tree_storage_t *)0x0) goto LAB_00028d28;\n            iVar32 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            pbVar26->next = prVar7->str_tree_storage;\n            iVar29 = 0;\n            prVar7->str_tree_storage = pbVar26;\n          }\n          else {\n            iVar32 = iVar29 + 1;\n            local_98 = iVar29 * 0x20 + 4;\n            local_94 = iVar29 * 0x20 + 0x18;\n            pbVar26 = prVar7->str_tree_storage;\n          }\n          prVar7->str_tree_storage_idx = iVar32;\n          pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n          pbVar22 = (bin_tree_t *)((int)pbVar26->data + local_98 + -4);\n          pbVar26->data[iVar29].left = pbVar16;\n          pbVar26->data[iVar29].right = pbVar43;\n          *(undefined1 *)((int)&pbVar26->data[0].parent + local_94) = 0x10;\n          puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n          *puVar2 = *puVar2 & 0xf3;\n          pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].node_idx = -1;\n          bVar47 = (bool)(bVar47 | pbVar22 == (bin_tree_t *)0x0);\n          pbVar16->parent = pbVar22;\n          if (pbVar43 != (bin_tree_t *)0x0) {\n            pbVar43->parent = pbVar22;\n          }\n        }\n        prVar7 = local_b0;\n        if (!bVar47) {\n          dfa->str_tree = pbVar22;\n          sVar11 = local_b0->nodes_alloc * 4;\n          __size = local_b0->nodes_alloc * 0xc;\n          pIVar17 = (Idx *)malloc(sVar11);\n          local_b0->nexts = pIVar17;\n          pIVar18 = (Idx *)malloc(sVar11);\n          local_b0->org_indices = pIVar18;\n          prVar19 = (re_node_set *)malloc(__size);\n          local_b0->edests = prVar19;\n          prVar20 = (re_node_set *)malloc(__size);\n          local_b0->eclosures = prVar20;\n          if ((((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0)) && (prVar20 != (re_node_set *)0x0)) {\n            sVar39 = preg_00->re_nsub;\n            __ptr = (size_t *)malloc(sVar39 * 4);\n            local_b0->subexp_map = (Idx *)__ptr;\n            pbVar16 = local_b0->str_tree;\n            if (__ptr != (size_t *)0x0) {\n              sVar33 = 0;\n              if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }\n              cVar27 = (pbVar16->token).field_0x4;\n              pbVar43 = pbVar16->left;\n              pbVar22 = pbVar16;\nLAB_00028010:\n              pbVar38 = pbVar22;\n              pbVar22 = pbVar43;\n              pbVar34 = pbVar22;\n              if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar27 != '\x11') goto joined_r0x00028003;\n              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          err = _REG_ESPACE;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      err = _REG_ESPACE;\n      dfa->str_tree = (bin_tree_t *)0x0;\n      goto LAB_00027c60;\n    }" { (expression_statement "err = _REG_NOERROR;" (assignment_expression "err = _REG_NOERROR" identifier = identifier) ;) (expression_statement "puVar5 = preg_00->translate;" (assignment_expression "puVar5 = preg_00->translate" identifier = (field_expression "preg_00->translate" identifier -> field_identifier)) ;) (expression_statement "ppuVar46 = &regexp.mbs;" (assignment_expression "ppuVar46 = &regexp.mbs" identifier = (pointer_expression "&regexp.mbs" & (field_expression "regexp.mbs" identifier . field_identifier))) ;) (for_statement "for (iVar29 = 0x13; iVar29 != 0; iVar29 = iVar29 + -1) {\n        *ppuVar46 = (uchar *)0x0;\n        ppuVar46 = ppuVar46 + (uint)bVar49 * -2 + 1;\n      }" for ( (assignment_expression "iVar29 = 0x13" identifier = number_literal) ; (binary_expression "iVar29 != 0" identifier != number_literal) ; (assignment_expression "iVar29 = iVar29 + -1" identifier = (binary_expression "iVar29 + -1" identifier + number_literal)) ) (compound_statement "{\n        *ppuVar46 = (uchar *)0x0;\n        ppuVar46 = ppuVar46 + (uint)bVar49 * -2 + 1;\n      }" { (expression_statement "*ppuVar46 = (uchar *)0x0;" (assignment_expression "*ppuVar46 = (uchar *)0x0" (pointer_expression "*ppuVar46" * identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppuVar46 = ppuVar46 + (uint)bVar49 * -2 + 1;" (assignment_expression "ppuVar46 = ppuVar46 + (uint)bVar49 * -2 + 1" identifier = (binary_expression "ppuVar46 + (uint)bVar49 * -2 + 1" (binary_expression "ppuVar46 + (uint)bVar49 * -2" identifier + (binary_expression "(uint)bVar49 * -2" (cast_expression "(uint)bVar49" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "uVar28 = (uint)preg & 0x400000;" (assignment_expression "uVar28 = (uint)preg & 0x400000" identifier = (binary_expression "(uint)preg & 0x400000" (cast_expression "(uint)preg" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "regexp.icase = uVar28 != 0;" (assignment_expression "regexp.icase = uVar28 != 0" (field_expression "regexp.icase" identifier . field_identifier) = (binary_expression "uVar28 != 0" identifier != number_literal)) ;) (expression_statement "regexp.mbs_allocated = puVar5 != (uchar *)0x0 || uVar28 != 0;" (assignment_expression "regexp.mbs_allocated = puVar5 != (uchar *)0x0 || uVar28 != 0" (field_expression "regexp.mbs_allocated" identifier . field_identifier) = (binary_expression "puVar5 != (uchar *)0x0 || uVar28 != 0" (binary_expression "puVar5 != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (binary_expression "uVar28 != 0" identifier != number_literal))) ;) (expression_statement "iVar29 = dfa->mb_cur_max;" (assignment_expression "iVar29 = dfa->mb_cur_max" identifier = (field_expression "dfa->mb_cur_max" identifier -> field_identifier)) ;) (expression_statement "regexp.map_notascii = (byte)dfa->field_0x58 >> 3 & 1;" (assignment_expression "regexp.map_notascii = (byte)dfa->field_0x58 >> 3 & 1" (field_expression "regexp.map_notascii" identifier . field_identifier) = (binary_expression "(byte)dfa->field_0x58 >> 3 & 1" (binary_expression "(byte)dfa->field_0x58 >> 3" (cast_expression "(byte)dfa->field_0x58" ( (type_descriptor "byte" type_identifier) ) (field_expression "dfa->field_0x58" identifier -> field_identifier)) >> number_literal) & number_literal)) ;) (expression_statement "regexp.is_utf8 = (byte)dfa->field_0x58 >> 2 & 1;" (assignment_expression "regexp.is_utf8 = (byte)dfa->field_0x58 >> 2 & 1" (field_expression "regexp.is_utf8" identifier . field_identifier) = (binary_expression "(byte)dfa->field_0x58 >> 2 & 1" (binary_expression "(byte)dfa->field_0x58 >> 2" (cast_expression "(byte)dfa->field_0x58" ( (type_descriptor "byte" type_identifier) ) (field_expression "dfa->field_0x58" identifier -> field_identifier)) >> number_literal) & number_literal)) ;) (expression_statement "regexp.raw_mbs = puVar13;" (assignment_expression "regexp.raw_mbs = puVar13" (field_expression "regexp.raw_mbs" identifier . field_identifier) = identifier) ;) (expression_statement "regexp.len = extraout_ECX;" (assignment_expression "regexp.len = extraout_ECX" (field_expression "regexp.len" identifier . field_identifier) = identifier) ;) (expression_statement "regexp.trans = puVar5;" (assignment_expression "regexp.trans = puVar5" (field_expression "regexp.trans" identifier . field_identifier) = identifier) ;) (expression_statement "regexp.mb_cur_max = iVar29;" (assignment_expression "regexp.mb_cur_max = iVar29" (field_expression "regexp.mb_cur_max" identifier . field_identifier) = identifier) ;) (if_statement "if (extraout_ECX != 0) {\n        aVar14.idx = re_string_realloc_buffers(&regexp,sVar39);\n        if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n        iVar29 = dfa->mb_cur_max;\n      }" if (parenthesized_expression "(extraout_ECX != 0)" ( (binary_expression "extraout_ECX != 0" identifier != number_literal) )) (compound_statement "{\n        aVar14.idx = re_string_realloc_buffers(&regexp,sVar39);\n        if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n        iVar29 = dfa->mb_cur_max;\n      }" { (expression_statement "aVar14.idx = re_string_realloc_buffers(&regexp,sVar39);" (assignment_expression "aVar14.idx = re_string_realloc_buffers(&regexp,sVar39)" (field_expression "aVar14.idx" identifier . field_identifier) = (call_expression "re_string_realloc_buffers(&regexp,sVar39)" identifier (argument_list "(&regexp,sVar39)" ( (pointer_expression "&regexp" & identifier) , identifier )))) ;) (if_statement "if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;" if (parenthesized_expression "(aVar14.sbcset != (re_bitset_ptr_t)0x0)" ( (binary_expression "aVar14.sbcset != (re_bitset_ptr_t)0x0" (field_expression "aVar14.sbcset" identifier . field_identifier) != (cast_expression "(re_bitset_ptr_t)0x0" ( (type_descriptor "re_bitset_ptr_t" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00028335;" goto statement_identifier ;)) (expression_statement "iVar29 = dfa->mb_cur_max;" (assignment_expression "iVar29 = dfa->mb_cur_max" identifier = (field_expression "dfa->mb_cur_max" identifier -> field_identifier)) ;) })) (if_statement "if (regexp.mbs_allocated != '\0') {\n        puVar13 = regexp.mbs;\n      }" if (parenthesized_expression "(regexp.mbs_allocated != '\0')" ( (binary_expression "regexp.mbs_allocated != '\0'" (field_expression "regexp.mbs_allocated" identifier . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        puVar13 = regexp.mbs;\n      }" { (expression_statement "puVar13 = regexp.mbs;" (assignment_expression "puVar13 = regexp.mbs" identifier = (field_expression "regexp.mbs" identifier . field_identifier)) ;) })) (expression_statement "regexp.mbs = puVar13;" (assignment_expression "regexp.mbs = puVar13" (field_expression "regexp.mbs" identifier . field_identifier) = identifier) ;) (if_statement "if (uVar28 == 0) {\n        if (iVar29 < 2) {\n          iVar29 = regexp.bufs_len;\n          regexp.valid_raw_len = regexp.bufs_len;\n          if (puVar5 != (uchar *)0x0) {\n            if (regexp.len <= regexp.bufs_len) {\n              regexp.bufs_len = regexp.len;\n            }\n            iVar29 = regexp.valid_len;\n            regexp.valid_raw_len = regexp.valid_len;\n            if (regexp.valid_len < regexp.bufs_len) {\n              puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n              iVar32 = regexp.valid_len + 1;\n              iVar29 = regexp.bufs_len;\n              regexp.valid_raw_len = regexp.bufs_len;\n              if (iVar32 < regexp.bufs_len) {\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }\n            }\n          }\n        }\n        else {\n          build_wcs_buffer(&regexp);\n          iVar29 = regexp.valid_len;\n        }\n      }\n      else {\n        if (1 < iVar29) {\n          do {\n            aVar14.idx = build_wcs_upper_buffer(&regexp);\n            if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n            iVar29 = regexp.valid_len;\n            if (((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;\n            rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2);\n          } while (rVar15 == _REG_NOERROR);\n          local_b0 = preg_00->buffer;\n          err = rVar15;\n          goto LAB_00027c60;\n        }\n        local_b0 = (re_dfa_t *)regexp.len;\n        if (regexp.bufs_len <= regexp.len) {\n          local_b0 = (re_dfa_t *)regexp.bufs_len;\n        }\n        if (regexp.valid_len < (int)local_b0) {\n          pp_Var25 = __ctype_toupper_loc();\n          while( true ) {\n            if (regexp.trans == (uchar *)0x0) {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n            }\n            else {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }\n            if (local_b0 == (re_dfa_t *)(regexp.valid_len + 1)) break;\n            regexp.valid_len = regexp.valid_len + 1;\n            puVar13 = regexp.mbs;\n          }\n        }\n        else {\n          local_b0 = (re_dfa_t *)regexp.valid_len;\n        }\n        regexp.valid_raw_len = (Idx)local_b0;\n        iVar29 = regexp.valid_raw_len;\n      }" if (parenthesized_expression "(uVar28 == 0)" ( (binary_expression "uVar28 == 0" identifier == number_literal) )) (compound_statement "{\n        if (iVar29 < 2) {\n          iVar29 = regexp.bufs_len;\n          regexp.valid_raw_len = regexp.bufs_len;\n          if (puVar5 != (uchar *)0x0) {\n            if (regexp.len <= regexp.bufs_len) {\n              regexp.bufs_len = regexp.len;\n            }\n            iVar29 = regexp.valid_len;\n            regexp.valid_raw_len = regexp.valid_len;\n            if (regexp.valid_len < regexp.bufs_len) {\n              puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n              iVar32 = regexp.valid_len + 1;\n              iVar29 = regexp.bufs_len;\n              regexp.valid_raw_len = regexp.bufs_len;\n              if (iVar32 < regexp.bufs_len) {\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }\n            }\n          }\n        }\n        else {\n          build_wcs_buffer(&regexp);\n          iVar29 = regexp.valid_len;\n        }\n      }" { (if_statement "if (iVar29 < 2) {\n          iVar29 = regexp.bufs_len;\n          regexp.valid_raw_len = regexp.bufs_len;\n          if (puVar5 != (uchar *)0x0) {\n            if (regexp.len <= regexp.bufs_len) {\n              regexp.bufs_len = regexp.len;\n            }\n            iVar29 = regexp.valid_len;\n            regexp.valid_raw_len = regexp.valid_len;\n            if (regexp.valid_len < regexp.bufs_len) {\n              puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n              iVar32 = regexp.valid_len + 1;\n              iVar29 = regexp.bufs_len;\n              regexp.valid_raw_len = regexp.bufs_len;\n              if (iVar32 < regexp.bufs_len) {\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }\n            }\n          }\n        }\n        else {\n          build_wcs_buffer(&regexp);\n          iVar29 = regexp.valid_len;\n        }" if (parenthesized_expression "(iVar29 < 2)" ( (binary_expression "iVar29 < 2" identifier < number_literal) )) (compound_statement "{\n          iVar29 = regexp.bufs_len;\n          regexp.valid_raw_len = regexp.bufs_len;\n          if (puVar5 != (uchar *)0x0) {\n            if (regexp.len <= regexp.bufs_len) {\n              regexp.bufs_len = regexp.len;\n            }\n            iVar29 = regexp.valid_len;\n            regexp.valid_raw_len = regexp.valid_len;\n            if (regexp.valid_len < regexp.bufs_len) {\n              puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n              iVar32 = regexp.valid_len + 1;\n              iVar29 = regexp.bufs_len;\n              regexp.valid_raw_len = regexp.bufs_len;\n              if (iVar32 < regexp.bufs_len) {\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }\n            }\n          }\n        }" { (expression_statement "iVar29 = regexp.bufs_len;" (assignment_expression "iVar29 = regexp.bufs_len" identifier = (field_expression "regexp.bufs_len" identifier . field_identifier)) ;) (expression_statement "regexp.valid_raw_len = regexp.bufs_len;" (assignment_expression "regexp.valid_raw_len = regexp.bufs_len" (field_expression "regexp.valid_raw_len" identifier . field_identifier) = (field_expression "regexp.bufs_len" identifier . field_identifier)) ;) (if_statement "if (puVar5 != (uchar *)0x0) {\n            if (regexp.len <= regexp.bufs_len) {\n              regexp.bufs_len = regexp.len;\n            }\n            iVar29 = regexp.valid_len;\n            regexp.valid_raw_len = regexp.valid_len;\n            if (regexp.valid_len < regexp.bufs_len) {\n              puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n              iVar32 = regexp.valid_len + 1;\n              iVar29 = regexp.bufs_len;\n              regexp.valid_raw_len = regexp.bufs_len;\n              if (iVar32 < regexp.bufs_len) {\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }\n            }\n          }" if (parenthesized_expression "(puVar5 != (uchar *)0x0)" ( (binary_expression "puVar5 != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (regexp.len <= regexp.bufs_len) {\n              regexp.bufs_len = regexp.len;\n            }\n            iVar29 = regexp.valid_len;\n            regexp.valid_raw_len = regexp.valid_len;\n            if (regexp.valid_len < regexp.bufs_len) {\n              puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n              iVar32 = regexp.valid_len + 1;\n              iVar29 = regexp.bufs_len;\n              regexp.valid_raw_len = regexp.bufs_len;\n              if (iVar32 < regexp.bufs_len) {\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }\n            }\n          }" { (if_statement "if (regexp.len <= regexp.bufs_len) {\n              regexp.bufs_len = regexp.len;\n            }" if (parenthesized_expression "(regexp.len <= regexp.bufs_len)" ( (binary_expression "regexp.len <= regexp.bufs_len" (field_expression "regexp.len" identifier . field_identifier) <= (field_expression "regexp.bufs_len" identifier . field_identifier)) )) (compound_statement "{\n              regexp.bufs_len = regexp.len;\n            }" { (expression_statement "regexp.bufs_len = regexp.len;" (assignment_expression "regexp.bufs_len = regexp.len" (field_expression "regexp.bufs_len" identifier . field_identifier) = (field_expression "regexp.len" identifier . field_identifier)) ;) })) (expression_statement "iVar29 = regexp.valid_len;" (assignment_expression "iVar29 = regexp.valid_len" identifier = (field_expression "regexp.valid_len" identifier . field_identifier)) ;) (expression_statement "regexp.valid_raw_len = regexp.valid_len;" (assignment_expression "regexp.valid_raw_len = regexp.valid_len" (field_expression "regexp.valid_raw_len" identifier . field_identifier) = (field_expression "regexp.valid_len" identifier . field_identifier)) ;) (if_statement "if (regexp.valid_len < regexp.bufs_len) {\n              puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n              iVar32 = regexp.valid_len + 1;\n              iVar29 = regexp.bufs_len;\n              regexp.valid_raw_len = regexp.bufs_len;\n              if (iVar32 < regexp.bufs_len) {\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }\n            }" if (parenthesized_expression "(regexp.valid_len < regexp.bufs_len)" ( (binary_expression "regexp.valid_len < regexp.bufs_len" (field_expression "regexp.valid_len" identifier . field_identifier) < (field_expression "regexp.bufs_len" identifier . field_identifier)) )) (compound_statement "{\n              puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n              iVar32 = regexp.valid_len + 1;\n              iVar29 = regexp.bufs_len;\n              regexp.valid_raw_len = regexp.bufs_len;\n              if (iVar32 < regexp.bufs_len) {\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }\n            }" { (expression_statement "puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];" (assignment_expression "puVar13[regexp.valid_len] =\n                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]" (subscript_expression "puVar13[regexp.valid_len]" identifier [ (field_expression "regexp.valid_len" identifier . field_identifier) ]) = (subscript_expression "regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]" (field_expression "regexp.trans" identifier . field_identifier) [ (subscript_expression "regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]" (field_expression "regexp.raw_mbs" identifier . field_identifier) [ (binary_expression "regexp.raw_mbs_idx + regexp.valid_len" (field_expression "regexp.raw_mbs_idx" identifier . field_identifier) + (field_expression "regexp.valid_len" identifier . field_identifier)) ]) ])) ;) (expression_statement "iVar32 = regexp.valid_len + 1;" (assignment_expression "iVar32 = regexp.valid_len + 1" identifier = (binary_expression "regexp.valid_len + 1" (field_expression "regexp.valid_len" identifier . field_identifier) + number_literal)) ;) (expression_statement "iVar29 = regexp.bufs_len;" (assignment_expression "iVar29 = regexp.bufs_len" identifier = (field_expression "regexp.bufs_len" identifier . field_identifier)) ;) (expression_statement "regexp.valid_raw_len = regexp.bufs_len;" (assignment_expression "regexp.valid_raw_len = regexp.bufs_len" (field_expression "regexp.valid_raw_len" identifier . field_identifier) = (field_expression "regexp.bufs_len" identifier . field_identifier)) ;) (if_statement "if (iVar32 < regexp.bufs_len) {\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }" if (parenthesized_expression "(iVar32 < regexp.bufs_len)" ( (binary_expression "iVar32 < regexp.bufs_len" identifier < (field_expression "regexp.bufs_len" identifier . field_identifier)) )) (compound_statement "{\n                do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);\n              }" { (do_statement "do {\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                } while (regexp.bufs_len != iVar32);" do (compound_statement "{\n                  puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];\n                  iVar32 = iVar32 + 1;\n                  iVar29 = regexp.bufs_len;\n                }" { (expression_statement "puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]];" (assignment_expression "puVar13[iVar32] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]]" (subscript_expression "puVar13[iVar32]" identifier [ identifier ]) = (subscript_expression "regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]]" (field_expression "regexp.trans" identifier . field_identifier) [ (subscript_expression "regexp.raw_mbs[regexp.raw_mbs_idx + iVar32]" (field_expression "regexp.raw_mbs" identifier . field_identifier) [ (binary_expression "regexp.raw_mbs_idx + iVar32" (field_expression "regexp.raw_mbs_idx" identifier . field_identifier) + identifier) ]) ])) ;) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (expression_statement "iVar29 = regexp.bufs_len;" (assignment_expression "iVar29 = regexp.bufs_len" identifier = (field_expression "regexp.bufs_len" identifier . field_identifier)) ;) }) while (parenthesized_expression "(regexp.bufs_len != iVar32)" ( (binary_expression "regexp.bufs_len != iVar32" (field_expression "regexp.bufs_len" identifier . field_identifier) != identifier) )) ;) })) })) })) }) (else_clause "else {\n          build_wcs_buffer(&regexp);\n          iVar29 = regexp.valid_len;\n        }" else (compound_statement "{\n          build_wcs_buffer(&regexp);\n          iVar29 = regexp.valid_len;\n        }" { (expression_statement "build_wcs_buffer(&regexp);" (call_expression "build_wcs_buffer(&regexp)" identifier (argument_list "(&regexp)" ( (pointer_expression "&regexp" & identifier) ))) ;) (expression_statement "iVar29 = regexp.valid_len;" (assignment_expression "iVar29 = regexp.valid_len" identifier = (field_expression "regexp.valid_len" identifier . field_identifier)) ;) }))) }) (else_clause "else {\n        if (1 < iVar29) {\n          do {\n            aVar14.idx = build_wcs_upper_buffer(&regexp);\n            if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n            iVar29 = regexp.valid_len;\n            if (((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;\n            rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2);\n          } while (rVar15 == _REG_NOERROR);\n          local_b0 = preg_00->buffer;\n          err = rVar15;\n          goto LAB_00027c60;\n        }\n        local_b0 = (re_dfa_t *)regexp.len;\n        if (regexp.bufs_len <= regexp.len) {\n          local_b0 = (re_dfa_t *)regexp.bufs_len;\n        }\n        if (regexp.valid_len < (int)local_b0) {\n          pp_Var25 = __ctype_toupper_loc();\n          while( true ) {\n            if (regexp.trans == (uchar *)0x0) {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n            }\n            else {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }\n            if (local_b0 == (re_dfa_t *)(regexp.valid_len + 1)) break;\n            regexp.valid_len = regexp.valid_len + 1;\n            puVar13 = regexp.mbs;\n          }\n        }\n        else {\n          local_b0 = (re_dfa_t *)regexp.valid_len;\n        }\n        regexp.valid_raw_len = (Idx)local_b0;\n        iVar29 = regexp.valid_raw_len;\n      }" else (compound_statement "{\n        if (1 < iVar29) {\n          do {\n            aVar14.idx = build_wcs_upper_buffer(&regexp);\n            if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n            iVar29 = regexp.valid_len;\n            if (((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;\n            rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2);\n          } while (rVar15 == _REG_NOERROR);\n          local_b0 = preg_00->buffer;\n          err = rVar15;\n          goto LAB_00027c60;\n        }\n        local_b0 = (re_dfa_t *)regexp.len;\n        if (regexp.bufs_len <= regexp.len) {\n          local_b0 = (re_dfa_t *)regexp.bufs_len;\n        }\n        if (regexp.valid_len < (int)local_b0) {\n          pp_Var25 = __ctype_toupper_loc();\n          while( true ) {\n            if (regexp.trans == (uchar *)0x0) {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n            }\n            else {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }\n            if (local_b0 == (re_dfa_t *)(regexp.valid_len + 1)) break;\n            regexp.valid_len = regexp.valid_len + 1;\n            puVar13 = regexp.mbs;\n          }\n        }\n        else {\n          local_b0 = (re_dfa_t *)regexp.valid_len;\n        }\n        regexp.valid_raw_len = (Idx)local_b0;\n        iVar29 = regexp.valid_raw_len;\n      }" { (if_statement "if (1 < iVar29) {\n          do {\n            aVar14.idx = build_wcs_upper_buffer(&regexp);\n            if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n            iVar29 = regexp.valid_len;\n            if (((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;\n            rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2);\n          } while (rVar15 == _REG_NOERROR);\n          local_b0 = preg_00->buffer;\n          err = rVar15;\n          goto LAB_00027c60;\n        }" if (parenthesized_expression "(1 < iVar29)" ( (binary_expression "1 < iVar29" number_literal < identifier) )) (compound_statement "{\n          do {\n            aVar14.idx = build_wcs_upper_buffer(&regexp);\n            if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n            iVar29 = regexp.valid_len;\n            if (((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;\n            rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2);\n          } while (rVar15 == _REG_NOERROR);\n          local_b0 = preg_00->buffer;\n          err = rVar15;\n          goto LAB_00027c60;\n        }" { (do_statement "do {\n            aVar14.idx = build_wcs_upper_buffer(&regexp);\n            if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n            iVar29 = regexp.valid_len;\n            if (((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;\n            rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2);\n          } while (rVar15 == _REG_NOERROR);" do (compound_statement "{\n            aVar14.idx = build_wcs_upper_buffer(&regexp);\n            if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n            iVar29 = regexp.valid_len;\n            if (((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;\n            rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2);\n          }" { (expression_statement "aVar14.idx = build_wcs_upper_buffer(&regexp);" (assignment_expression "aVar14.idx = build_wcs_upper_buffer(&regexp)" (field_expression "aVar14.idx" identifier . field_identifier) = (call_expression "build_wcs_upper_buffer(&regexp)" identifier (argument_list "(&regexp)" ( (pointer_expression "&regexp" & identifier) )))) ;) (if_statement "if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;" if (parenthesized_expression "(aVar14.sbcset != (re_bitset_ptr_t)0x0)" ( (binary_expression "aVar14.sbcset != (re_bitset_ptr_t)0x0" (field_expression "aVar14.sbcset" identifier . field_identifier) != (cast_expression "(re_bitset_ptr_t)0x0" ( (type_descriptor "re_bitset_ptr_t" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00028335;" goto statement_identifier ;)) (expression_statement "iVar29 = regexp.valid_len;" (assignment_expression "iVar29 = regexp.valid_len" identifier = (field_expression "regexp.valid_len" identifier . field_identifier)) ;) (if_statement "if (((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;" if (parenthesized_expression "(((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len))" ( (binary_expression "((int)extraout_ECX <= regexp.valid_raw_len) ||\n               (dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)" (parenthesized_expression "((int)extraout_ECX <= regexp.valid_raw_len)" ( (binary_expression "(int)extraout_ECX <= regexp.valid_raw_len" (cast_expression "(int)extraout_ECX" ( (type_descriptor "int" primitive_type) ) identifier) <= (field_expression "regexp.valid_raw_len" identifier . field_identifier)) )) || (parenthesized_expression "(dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len)" ( (binary_expression "dfa->mb_cur_max + regexp.valid_len < regexp.bufs_len" (binary_expression "dfa->mb_cur_max + regexp.valid_len" (field_expression "dfa->mb_cur_max" identifier -> field_identifier) + (field_expression "regexp.valid_len" identifier . field_identifier)) < (field_expression "regexp.bufs_len" identifier . field_identifier)) ))) )) (goto_statement "goto LAB_00027d86;" goto statement_identifier ;)) (expression_statement "rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2);" (assignment_expression "rVar15 = re_string_realloc_buffers(&regexp,regexp.bufs_len * 2)" identifier = (call_expression "re_string_realloc_buffers(&regexp,regexp.bufs_len * 2)" identifier (argument_list "(&regexp,regexp.bufs_len * 2)" ( (pointer_expression "&regexp" & identifier) , (binary_expression "regexp.bufs_len * 2" (field_expression "regexp.bufs_len" identifier . field_identifier) * number_literal) )))) ;) }) while (parenthesized_expression "(rVar15 == _REG_NOERROR)" ( (binary_expression "rVar15 == _REG_NOERROR" identifier == identifier) )) ;) (expression_statement "local_b0 = preg_00->buffer;" (assignment_expression "local_b0 = preg_00->buffer" identifier = (field_expression "preg_00->buffer" identifier -> field_identifier)) ;) (expression_statement "err = rVar15;" (assignment_expression "err = rVar15" identifier = identifier) ;) (goto_statement "goto LAB_00027c60;" goto statement_identifier ;) })) (expression_statement "local_b0 = (re_dfa_t *)regexp.len;" (assignment_expression "local_b0 = (re_dfa_t *)regexp.len" identifier = (cast_expression "(re_dfa_t *)regexp.len" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "regexp.len" identifier . field_identifier))) ;) (if_statement "if (regexp.bufs_len <= regexp.len) {\n          local_b0 = (re_dfa_t *)regexp.bufs_len;\n        }" if (parenthesized_expression "(regexp.bufs_len <= regexp.len)" ( (binary_expression "regexp.bufs_len <= regexp.len" (field_expression "regexp.bufs_len" identifier . field_identifier) <= (field_expression "regexp.len" identifier . field_identifier)) )) (compound_statement "{\n          local_b0 = (re_dfa_t *)regexp.bufs_len;\n        }" { (expression_statement "local_b0 = (re_dfa_t *)regexp.bufs_len;" (assignment_expression "local_b0 = (re_dfa_t *)regexp.bufs_len" identifier = (cast_expression "(re_dfa_t *)regexp.bufs_len" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "regexp.bufs_len" identifier . field_identifier))) ;) })) (if_statement "if (regexp.valid_len < (int)local_b0) {\n          pp_Var25 = __ctype_toupper_loc();\n          while( true ) {\n            if (regexp.trans == (uchar *)0x0) {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n            }\n            else {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }\n            if (local_b0 == (re_dfa_t *)(regexp.valid_len + 1)) break;\n            regexp.valid_len = regexp.valid_len + 1;\n            puVar13 = regexp.mbs;\n          }\n        }\n        else {\n          local_b0 = (re_dfa_t *)regexp.valid_len;\n        }" if (parenthesized_expression "(regexp.valid_len < (int)local_b0)" ( (binary_expression "regexp.valid_len < (int)local_b0" (field_expression "regexp.valid_len" identifier . field_identifier) < (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          pp_Var25 = __ctype_toupper_loc();\n          while( true ) {\n            if (regexp.trans == (uchar *)0x0) {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n            }\n            else {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }\n            if (local_b0 == (re_dfa_t *)(regexp.valid_len + 1)) break;\n            regexp.valid_len = regexp.valid_len + 1;\n            puVar13 = regexp.mbs;\n          }\n        }" { (expression_statement "pp_Var25 = __ctype_toupper_loc();" (assignment_expression "pp_Var25 = __ctype_toupper_loc()" identifier = (call_expression "__ctype_toupper_loc()" identifier (argument_list "()" ( )))) ;) (while_statement "while( true ) {\n            if (regexp.trans == (uchar *)0x0) {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n            }\n            else {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }\n            if (local_b0 == (re_dfa_t *)(regexp.valid_len + 1)) break;\n            regexp.valid_len = regexp.valid_len + 1;\n            puVar13 = regexp.mbs;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if (regexp.trans == (uchar *)0x0) {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n            }\n            else {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }\n            if (local_b0 == (re_dfa_t *)(regexp.valid_len + 1)) break;\n            regexp.valid_len = regexp.valid_len + 1;\n            puVar13 = regexp.mbs;\n          }" { (if_statement "if (regexp.trans == (uchar *)0x0) {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n            }\n            else {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }" if (parenthesized_expression "(regexp.trans == (uchar *)0x0)" ( (binary_expression "regexp.trans == (uchar *)0x0" (field_expression "regexp.trans" identifier . field_identifier) == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];\n            }" { (expression_statement "puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];" (assignment_expression "puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]" (subscript_expression "puVar13[regexp.valid_len]" identifier [ (field_expression "regexp.valid_len" identifier . field_identifier) ]) = (subscript_expression "(uchar)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]" (call_expression "(uchar)(*pp_Var25)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(*pp_Var25)" ( (pointer_expression "*pp_Var25" * identifier) ))) [ (subscript_expression "regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]" (field_expression "regexp.raw_mbs" identifier . field_identifier) [ (binary_expression "regexp.raw_mbs_idx + regexp.valid_len" (field_expression "regexp.raw_mbs_idx" identifier . field_identifier) + (field_expression "regexp.valid_len" identifier . field_identifier)) ]) ])) ;) }) (else_clause "else {\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }" else (compound_statement "{\n              puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];\n            }" { (expression_statement "puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];" (assignment_expression "puVar13[regexp.valid_len] =\n                   (uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]]" (subscript_expression "puVar13[regexp.valid_len]" identifier [ (field_expression "regexp.valid_len" identifier . field_identifier) ]) = (subscript_expression "(uchar)(*pp_Var25)\n                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]]" (call_expression "(uchar)(*pp_Var25)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "(*pp_Var25)" ( (pointer_expression "*pp_Var25" * identifier) ))) [ (subscript_expression "regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]" (field_expression "regexp.trans" identifier . field_identifier) [ (subscript_expression "regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]" (field_expression "regexp.raw_mbs" identifier . field_identifier) [ (binary_expression "regexp.raw_mbs_idx + regexp.valid_len" (field_expression "regexp.raw_mbs_idx" identifier . field_identifier) + (field_expression "regexp.valid_len" identifier . field_identifier)) ]) ]) ])) ;) }))) (if_statement "if (local_b0 == (re_dfa_t *)(regexp.valid_len + 1)) break;" if (parenthesized_expression "(local_b0 == (re_dfa_t *)(regexp.valid_len + 1))" ( (binary_expression "local_b0 == (re_dfa_t *)(regexp.valid_len + 1)" identifier == (cast_expression "(re_dfa_t *)(regexp.valid_len + 1)" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(regexp.valid_len + 1)" ( (binary_expression "regexp.valid_len + 1" (field_expression "regexp.valid_len" identifier . field_identifier) + number_literal) )))) )) (break_statement "break;" break ;)) (expression_statement "regexp.valid_len = regexp.valid_len + 1;" (assignment_expression "regexp.valid_len = regexp.valid_len + 1" (field_expression "regexp.valid_len" identifier . field_identifier) = (binary_expression "regexp.valid_len + 1" (field_expression "regexp.valid_len" identifier . field_identifier) + number_literal)) ;) (expression_statement "puVar13 = regexp.mbs;" (assignment_expression "puVar13 = regexp.mbs" identifier = (field_expression "regexp.mbs" identifier . field_identifier)) ;) })) }) (else_clause "else {\n          local_b0 = (re_dfa_t *)regexp.valid_len;\n        }" else (compound_statement "{\n          local_b0 = (re_dfa_t *)regexp.valid_len;\n        }" { (expression_statement "local_b0 = (re_dfa_t *)regexp.valid_len;" (assignment_expression "local_b0 = (re_dfa_t *)regexp.valid_len" identifier = (cast_expression "(re_dfa_t *)regexp.valid_len" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "regexp.valid_len" identifier . field_identifier))) ;) }))) (expression_statement "regexp.valid_raw_len = (Idx)local_b0;" (assignment_expression "regexp.valid_raw_len = (Idx)local_b0" (field_expression "regexp.valid_raw_len" identifier . field_identifier) = (cast_expression "(Idx)local_b0" ( (type_descriptor "Idx" type_identifier) ) identifier)) ;) (expression_statement "iVar29 = regexp.valid_raw_len;" (assignment_expression "iVar29 = regexp.valid_raw_len" identifier = (field_expression "regexp.valid_raw_len" identifier . field_identifier)) ;) }))) (labeled_statement "LAB_00027d86:\n      regexp.valid_len = iVar29;" statement_identifier : (expression_statement "regexp.valid_len = iVar29;" (assignment_expression "regexp.valid_len = iVar29" (field_expression "regexp.valid_len" identifier . field_identifier) = identifier) ;)) (expression_statement "err = _REG_NOERROR;" (assignment_expression "err = _REG_NOERROR" identifier = identifier) ;) (expression_statement "prVar7 = preg_00->buffer;" (assignment_expression "prVar7 = preg_00->buffer" identifier = (field_expression "preg_00->buffer" identifier -> field_identifier)) ;) (expression_statement "preg_00->re_nsub = 0;" (assignment_expression "preg_00->re_nsub = 0" (field_expression "preg_00->re_nsub" identifier -> field_identifier) = number_literal) ;) (expression_statement "prVar7->syntax = (reg_syntax_t)preg;" (assignment_expression "prVar7->syntax = (reg_syntax_t)preg" (field_expression "prVar7->syntax" identifier -> field_identifier) = (cast_expression "(reg_syntax_t)preg" ( (type_descriptor "reg_syntax_t" type_identifier) ) identifier)) ;) (expression_statement "syntax_00 = 0x27db7;" (assignment_expression "syntax_00 = 0x27db7" identifier = number_literal) ;) (expression_statement "iVar29 = peek_token(&current_token,&regexp,(uint)preg | 0x800000);" (assignment_expression "iVar29 = peek_token(&current_token,&regexp,(uint)preg | 0x800000)" identifier = (call_expression "peek_token(&current_token,&regexp,(uint)preg | 0x800000)" identifier (argument_list "(&current_token,&regexp,(uint)preg | 0x800000)" ( (pointer_expression "&current_token" & identifier) , (pointer_expression "&regexp" & identifier) , (binary_expression "(uint)preg | 0x800000" (cast_expression "(uint)preg" ( (type_descriptor "uint" type_identifier) ) identifier) | number_literal) )))) ;) (expression_statement "regexp.cur_idx = regexp.cur_idx + iVar29;" (assignment_expression "regexp.cur_idx = regexp.cur_idx + iVar29" (field_expression "regexp.cur_idx" identifier . field_identifier) = (binary_expression "regexp.cur_idx + iVar29" (field_expression "regexp.cur_idx" identifier . field_identifier) + identifier)) ;) (expression_statement "pbVar16 = parse_reg_exp((re_string_t *)preg,(regex_t *)0x0,(re_token_t *)&err,syntax_00,\n                              in_stack_ffffff44.idx,in_stack_ffffff48);" (assignment_expression "pbVar16 = parse_reg_exp((re_string_t *)preg,(regex_t *)0x0,(re_token_t *)&err,syntax_00,\n                              in_stack_ffffff44.idx,in_stack_ffffff48)" identifier = (call_expression "parse_reg_exp((re_string_t *)preg,(regex_t *)0x0,(re_token_t *)&err,syntax_00,\n                              in_stack_ffffff44.idx,in_stack_ffffff48)" identifier (argument_list "((re_string_t *)preg,(regex_t *)0x0,(re_token_t *)&err,syntax_00,\n                              in_stack_ffffff44.idx,in_stack_ffffff48)" ( (cast_expression "(re_string_t *)preg" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(regex_t *)0x0" ( (type_descriptor "regex_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(re_token_t *)&err" ( (type_descriptor "re_token_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&err" & identifier)) , identifier , (field_expression "in_stack_ffffff44.idx" identifier . field_identifier) , identifier )))) ;) (if_statement "if ((err != _REG_NOERROR) && (pbVar16 == (bin_tree_t *)0x0)) {\n        dfa->str_tree = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        goto LAB_00027c60;\n      }" if (parenthesized_expression "((err != _REG_NOERROR) && (pbVar16 == (bin_tree_t *)0x0))" ( (binary_expression "(err != _REG_NOERROR) && (pbVar16 == (bin_tree_t *)0x0)" (parenthesized_expression "(err != _REG_NOERROR)" ( (binary_expression "err != _REG_NOERROR" identifier != identifier) )) && (parenthesized_expression "(pbVar16 == (bin_tree_t *)0x0)" ( (binary_expression "pbVar16 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        dfa->str_tree = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        goto LAB_00027c60;\n      }" { (expression_statement "dfa->str_tree = (bin_tree_t *)0x0;" (assignment_expression "dfa->str_tree = (bin_tree_t *)0x0" (field_expression "dfa->str_tree" identifier -> field_identifier) = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_b0 = preg_00->buffer;" (assignment_expression "local_b0 = preg_00->buffer" identifier = (field_expression "preg_00->buffer" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00027c60;" goto statement_identifier ;) })) (expression_statement "iVar29 = prVar7->str_tree_storage_idx;" (assignment_expression "iVar29 = prVar7->str_tree_storage_idx" identifier = (field_expression "prVar7->str_tree_storage_idx" identifier -> field_identifier)) ;) (if_statement "if (iVar29 == 0x1f) {\n        pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n        if (pbVar26 != (bin_tree_storage_t *)0x0) {\n          iVar32 = 1;\n          iVar37 = 4;\n          iVar31 = 0x18;\n          pbVar26->next = prVar7->str_tree_storage;\n          iVar29 = 0;\n          prVar7->str_tree_storage = pbVar26;\n          goto LAB_00027e0d;\n        }\n        local_b0 = preg_00->buffer;\n        if (pbVar16 != (bin_tree_t *)0x0) {\n          pbVar43 = (bin_tree_t *)0x0;\n          bVar47 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        pbVar26 = prVar7->str_tree_storage;\n        iVar32 = iVar29 + 1;\n        iVar31 = iVar29 * 0x20 + 0x18;\n        iVar37 = iVar29 * 0x20 + 4;\nLAB_00027e0d:\n        prVar7->str_tree_storage_idx = iVar32;\n        pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].left = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].right = (bin_tree_t *)0x0;\n        *(undefined1 *)((int)&pbVar26->data[0].parent + iVar31) = 2;\n        puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n        *puVar2 = *puVar2 & 0xf3;\n        pbVar43 = (bin_tree_t *)((int)pbVar26->data + iVar37 + -4);\n        bVar47 = pbVar43 == (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].node_idx = -1;\n        pbVar22 = pbVar43;\n        if (pbVar16 != (bin_tree_t *)0x0) {\nLAB_00027e67:\n          iVar29 = prVar7->str_tree_storage_idx;\n          if (iVar29 == 0x1f) {\n            pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n            if (pbVar26 == (bin_tree_storage_t *)0x0) goto LAB_00028d28;\n            iVar32 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            pbVar26->next = prVar7->str_tree_storage;\n            iVar29 = 0;\n            prVar7->str_tree_storage = pbVar26;\n          }\n          else {\n            iVar32 = iVar29 + 1;\n            local_98 = iVar29 * 0x20 + 4;\n            local_94 = iVar29 * 0x20 + 0x18;\n            pbVar26 = prVar7->str_tree_storage;\n          }\n          prVar7->str_tree_storage_idx = iVar32;\n          pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n          pbVar22 = (bin_tree_t *)((int)pbVar26->data + local_98 + -4);\n          pbVar26->data[iVar29].left = pbVar16;\n          pbVar26->data[iVar29].right = pbVar43;\n          *(undefined1 *)((int)&pbVar26->data[0].parent + local_94) = 0x10;\n          puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n          *puVar2 = *puVar2 & 0xf3;\n          pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].node_idx = -1;\n          bVar47 = (bool)(bVar47 | pbVar22 == (bin_tree_t *)0x0);\n          pbVar16->parent = pbVar22;\n          if (pbVar43 != (bin_tree_t *)0x0) {\n            pbVar43->parent = pbVar22;\n          }\n        }\n        prVar7 = local_b0;\n        if (!bVar47) {\n          dfa->str_tree = pbVar22;\n          sVar11 = local_b0->nodes_alloc * 4;\n          __size = local_b0->nodes_alloc * 0xc;\n          pIVar17 = (Idx *)malloc(sVar11);\n          local_b0->nexts = pIVar17;\n          pIVar18 = (Idx *)malloc(sVar11);\n          local_b0->org_indices = pIVar18;\n          prVar19 = (re_node_set *)malloc(__size);\n          local_b0->edests = prVar19;\n          prVar20 = (re_node_set *)malloc(__size);\n          local_b0->eclosures = prVar20;\n          if ((((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0)) && (prVar20 != (re_node_set *)0x0)) {\n            sVar39 = preg_00->re_nsub;\n            __ptr = (size_t *)malloc(sVar39 * 4);\n            local_b0->subexp_map = (Idx *)__ptr;\n            pbVar16 = local_b0->str_tree;\n            if (__ptr != (size_t *)0x0) {\n              sVar33 = 0;\n              if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }\n              cVar27 = (pbVar16->token).field_0x4;\n              pbVar43 = pbVar16->left;\n              pbVar22 = pbVar16;\nLAB_00028010:\n              pbVar38 = pbVar22;\n              pbVar22 = pbVar43;\n              pbVar34 = pbVar22;\n              if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar27 != '\x11') goto joined_r0x00028003;\n              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          err = _REG_ESPACE;\n          goto LAB_00027c60;\n        }\n      }" if (parenthesized_expression "(iVar29 == 0x1f)" ( (binary_expression "iVar29 == 0x1f" identifier == number_literal) )) (compound_statement "{\n        pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n        if (pbVar26 != (bin_tree_storage_t *)0x0) {\n          iVar32 = 1;\n          iVar37 = 4;\n          iVar31 = 0x18;\n          pbVar26->next = prVar7->str_tree_storage;\n          iVar29 = 0;\n          prVar7->str_tree_storage = pbVar26;\n          goto LAB_00027e0d;\n        }\n        local_b0 = preg_00->buffer;\n        if (pbVar16 != (bin_tree_t *)0x0) {\n          pbVar43 = (bin_tree_t *)0x0;\n          bVar47 = true;\n          goto LAB_00027e67;\n        }\n      }" { (expression_statement "pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);" (assignment_expression "pbVar26 = (bin_tree_storage_t *)malloc(0x3e4)" identifier = (cast_expression "(bin_tree_storage_t *)malloc(0x3e4)" ( (type_descriptor "bin_tree_storage_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x3e4)" identifier (argument_list "(0x3e4)" ( number_literal ))))) ;) (if_statement "if (pbVar26 != (bin_tree_storage_t *)0x0) {\n          iVar32 = 1;\n          iVar37 = 4;\n          iVar31 = 0x18;\n          pbVar26->next = prVar7->str_tree_storage;\n          iVar29 = 0;\n          prVar7->str_tree_storage = pbVar26;\n          goto LAB_00027e0d;\n        }" if (parenthesized_expression "(pbVar26 != (bin_tree_storage_t *)0x0)" ( (binary_expression "pbVar26 != (bin_tree_storage_t *)0x0" identifier != (cast_expression "(bin_tree_storage_t *)0x0" ( (type_descriptor "bin_tree_storage_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar32 = 1;\n          iVar37 = 4;\n          iVar31 = 0x18;\n          pbVar26->next = prVar7->str_tree_storage;\n          iVar29 = 0;\n          prVar7->str_tree_storage = pbVar26;\n          goto LAB_00027e0d;\n        }" { (expression_statement "iVar32 = 1;" (assignment_expression "iVar32 = 1" identifier = number_literal) ;) (expression_statement "iVar37 = 4;" (assignment_expression "iVar37 = 4" identifier = number_literal) ;) (expression_statement "iVar31 = 0x18;" (assignment_expression "iVar31 = 0x18" identifier = number_literal) ;) (expression_statement "pbVar26->next = prVar7->str_tree_storage;" (assignment_expression "pbVar26->next = prVar7->str_tree_storage" (field_expression "pbVar26->next" identifier -> field_identifier) = (field_expression "prVar7->str_tree_storage" identifier -> field_identifier)) ;) (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (expression_statement "prVar7->str_tree_storage = pbVar26;" (assignment_expression "prVar7->str_tree_storage = pbVar26" (field_expression "prVar7->str_tree_storage" identifier -> field_identifier) = identifier) ;) (goto_statement "goto LAB_00027e0d;" goto statement_identifier ;) })) (expression_statement "local_b0 = preg_00->buffer;" (assignment_expression "local_b0 = preg_00->buffer" identifier = (field_expression "preg_00->buffer" identifier -> field_identifier)) ;) (if_statement "if (pbVar16 != (bin_tree_t *)0x0) {\n          pbVar43 = (bin_tree_t *)0x0;\n          bVar47 = true;\n          goto LAB_00027e67;\n        }" if (parenthesized_expression "(pbVar16 != (bin_tree_t *)0x0)" ( (binary_expression "pbVar16 != (bin_tree_t *)0x0" identifier != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pbVar43 = (bin_tree_t *)0x0;\n          bVar47 = true;\n          goto LAB_00027e67;\n        }" { (expression_statement "pbVar43 = (bin_tree_t *)0x0;" (assignment_expression "pbVar43 = (bin_tree_t *)0x0" identifier = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar47 = true;" (assignment_expression "bVar47 = true" identifier = true) ;) (goto_statement "goto LAB_00027e67;" goto statement_identifier ;) })) }) (else_clause "else {\n        pbVar26 = prVar7->str_tree_storage;\n        iVar32 = iVar29 + 1;\n        iVar31 = iVar29 * 0x20 + 0x18;\n        iVar37 = iVar29 * 0x20 + 4;\nLAB_00027e0d:\n        prVar7->str_tree_storage_idx = iVar32;\n        pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].left = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].right = (bin_tree_t *)0x0;\n        *(undefined1 *)((int)&pbVar26->data[0].parent + iVar31) = 2;\n        puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n        *puVar2 = *puVar2 & 0xf3;\n        pbVar43 = (bin_tree_t *)((int)pbVar26->data + iVar37 + -4);\n        bVar47 = pbVar43 == (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].node_idx = -1;\n        pbVar22 = pbVar43;\n        if (pbVar16 != (bin_tree_t *)0x0) {\nLAB_00027e67:\n          iVar29 = prVar7->str_tree_storage_idx;\n          if (iVar29 == 0x1f) {\n            pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n            if (pbVar26 == (bin_tree_storage_t *)0x0) goto LAB_00028d28;\n            iVar32 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            pbVar26->next = prVar7->str_tree_storage;\n            iVar29 = 0;\n            prVar7->str_tree_storage = pbVar26;\n          }\n          else {\n            iVar32 = iVar29 + 1;\n            local_98 = iVar29 * 0x20 + 4;\n            local_94 = iVar29 * 0x20 + 0x18;\n            pbVar26 = prVar7->str_tree_storage;\n          }\n          prVar7->str_tree_storage_idx = iVar32;\n          pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n          pbVar22 = (bin_tree_t *)((int)pbVar26->data + local_98 + -4);\n          pbVar26->data[iVar29].left = pbVar16;\n          pbVar26->data[iVar29].right = pbVar43;\n          *(undefined1 *)((int)&pbVar26->data[0].parent + local_94) = 0x10;\n          puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n          *puVar2 = *puVar2 & 0xf3;\n          pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].node_idx = -1;\n          bVar47 = (bool)(bVar47 | pbVar22 == (bin_tree_t *)0x0);\n          pbVar16->parent = pbVar22;\n          if (pbVar43 != (bin_tree_t *)0x0) {\n            pbVar43->parent = pbVar22;\n          }\n        }\n        prVar7 = local_b0;\n        if (!bVar47) {\n          dfa->str_tree = pbVar22;\n          sVar11 = local_b0->nodes_alloc * 4;\n          __size = local_b0->nodes_alloc * 0xc;\n          pIVar17 = (Idx *)malloc(sVar11);\n          local_b0->nexts = pIVar17;\n          pIVar18 = (Idx *)malloc(sVar11);\n          local_b0->org_indices = pIVar18;\n          prVar19 = (re_node_set *)malloc(__size);\n          local_b0->edests = prVar19;\n          prVar20 = (re_node_set *)malloc(__size);\n          local_b0->eclosures = prVar20;\n          if ((((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0)) && (prVar20 != (re_node_set *)0x0)) {\n            sVar39 = preg_00->re_nsub;\n            __ptr = (size_t *)malloc(sVar39 * 4);\n            local_b0->subexp_map = (Idx *)__ptr;\n            pbVar16 = local_b0->str_tree;\n            if (__ptr != (size_t *)0x0) {\n              sVar33 = 0;\n              if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }\n              cVar27 = (pbVar16->token).field_0x4;\n              pbVar43 = pbVar16->left;\n              pbVar22 = pbVar16;\nLAB_00028010:\n              pbVar38 = pbVar22;\n              pbVar22 = pbVar43;\n              pbVar34 = pbVar22;\n              if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar27 != '\x11') goto joined_r0x00028003;\n              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          err = _REG_ESPACE;\n          goto LAB_00027c60;\n        }\n      }" else (compound_statement "{\n        pbVar26 = prVar7->str_tree_storage;\n        iVar32 = iVar29 + 1;\n        iVar31 = iVar29 * 0x20 + 0x18;\n        iVar37 = iVar29 * 0x20 + 4;\nLAB_00027e0d:\n        prVar7->str_tree_storage_idx = iVar32;\n        pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].left = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].right = (bin_tree_t *)0x0;\n        *(undefined1 *)((int)&pbVar26->data[0].parent + iVar31) = 2;\n        puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n        *puVar2 = *puVar2 & 0xf3;\n        pbVar43 = (bin_tree_t *)((int)pbVar26->data + iVar37 + -4);\n        bVar47 = pbVar43 == (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n        local_b0 = preg_00->buffer;\n        pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n        pbVar26->data[iVar29].node_idx = -1;\n        pbVar22 = pbVar43;\n        if (pbVar16 != (bin_tree_t *)0x0) {\nLAB_00027e67:\n          iVar29 = prVar7->str_tree_storage_idx;\n          if (iVar29 == 0x1f) {\n            pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n            if (pbVar26 == (bin_tree_storage_t *)0x0) goto LAB_00028d28;\n            iVar32 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            pbVar26->next = prVar7->str_tree_storage;\n            iVar29 = 0;\n            prVar7->str_tree_storage = pbVar26;\n          }\n          else {\n            iVar32 = iVar29 + 1;\n            local_98 = iVar29 * 0x20 + 4;\n            local_94 = iVar29 * 0x20 + 0x18;\n            pbVar26 = prVar7->str_tree_storage;\n          }\n          prVar7->str_tree_storage_idx = iVar32;\n          pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n          pbVar22 = (bin_tree_t *)((int)pbVar26->data + local_98 + -4);\n          pbVar26->data[iVar29].left = pbVar16;\n          pbVar26->data[iVar29].right = pbVar43;\n          *(undefined1 *)((int)&pbVar26->data[0].parent + local_94) = 0x10;\n          puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n          *puVar2 = *puVar2 & 0xf3;\n          pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].node_idx = -1;\n          bVar47 = (bool)(bVar47 | pbVar22 == (bin_tree_t *)0x0);\n          pbVar16->parent = pbVar22;\n          if (pbVar43 != (bin_tree_t *)0x0) {\n            pbVar43->parent = pbVar22;\n          }\n        }\n        prVar7 = local_b0;\n        if (!bVar47) {\n          dfa->str_tree = pbVar22;\n          sVar11 = local_b0->nodes_alloc * 4;\n          __size = local_b0->nodes_alloc * 0xc;\n          pIVar17 = (Idx *)malloc(sVar11);\n          local_b0->nexts = pIVar17;\n          pIVar18 = (Idx *)malloc(sVar11);\n          local_b0->org_indices = pIVar18;\n          prVar19 = (re_node_set *)malloc(__size);\n          local_b0->edests = prVar19;\n          prVar20 = (re_node_set *)malloc(__size);\n          local_b0->eclosures = prVar20;\n          if ((((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0)) && (prVar20 != (re_node_set *)0x0)) {\n            sVar39 = preg_00->re_nsub;\n            __ptr = (size_t *)malloc(sVar39 * 4);\n            local_b0->subexp_map = (Idx *)__ptr;\n            pbVar16 = local_b0->str_tree;\n            if (__ptr != (size_t *)0x0) {\n              sVar33 = 0;\n              if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }\n              cVar27 = (pbVar16->token).field_0x4;\n              pbVar43 = pbVar16->left;\n              pbVar22 = pbVar16;\nLAB_00028010:\n              pbVar38 = pbVar22;\n              pbVar22 = pbVar43;\n              pbVar34 = pbVar22;\n              if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar27 != '\x11') goto joined_r0x00028003;\n              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          err = _REG_ESPACE;\n          goto LAB_00027c60;\n        }\n      }" { (expression_statement "pbVar26 = prVar7->str_tree_storage;" (assignment_expression "pbVar26 = prVar7->str_tree_storage" identifier = (field_expression "prVar7->str_tree_storage" identifier -> field_identifier)) ;) (expression_statement "iVar32 = iVar29 + 1;" (assignment_expression "iVar32 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (expression_statement "iVar31 = iVar29 * 0x20 + 0x18;" (assignment_expression "iVar31 = iVar29 * 0x20 + 0x18" identifier = (binary_expression "iVar29 * 0x20 + 0x18" (binary_expression "iVar29 * 0x20" identifier * number_literal) + number_literal)) ;) (expression_statement "iVar37 = iVar29 * 0x20 + 4;" (assignment_expression "iVar37 = iVar29 * 0x20 + 4" identifier = (binary_expression "iVar29 * 0x20 + 4" (binary_expression "iVar29 * 0x20" identifier * number_literal) + number_literal)) ;) (labeled_statement "LAB_00027e0d:\n        prVar7->str_tree_storage_idx = iVar32;" statement_identifier : (expression_statement "prVar7->str_tree_storage_idx = iVar32;" (assignment_expression "prVar7->str_tree_storage_idx = iVar32" (field_expression "prVar7->str_tree_storage_idx" identifier -> field_identifier) = identifier) ;)) (expression_statement "pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;" (assignment_expression "pbVar26->data[iVar29].parent = (bin_tree_t *)0x0" (field_expression "pbVar26->data[iVar29].parent" (subscript_expression "pbVar26->data[iVar29]" (field_expression "pbVar26->data" identifier -> field_identifier) [ identifier ]) . field_identifier) = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar26->data[iVar29].left = (bin_tree_t *)0x0;" (assignment_expression "pbVar26->data[iVar29].left = (bin_tree_t *)0x0" (field_expression "pbVar26->data[iVar29].left" (subscript_expression "pbVar26->data[iVar29]" (field_expression "pbVar26->data" identifier -> field_identifier) [ identifier ]) . field_identifier) = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar26->data[iVar29].right = (bin_tree_t *)0x0;" (assignment_expression "pbVar26->data[iVar29].right = (bin_tree_t *)0x0" (field_expression "pbVar26->data[iVar29].right" (subscript_expression "pbVar26->data[iVar29]" (field_expression "pbVar26->data" identifier -> field_identifier) [ identifier ]) . field_identifier) = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(undefined1 *)((int)&pbVar26->data[0].parent + iVar31) = 2;" (assignment_expression "*(undefined1 *)((int)&pbVar26->data[0].parent + iVar31) = 2" (pointer_expression "*(undefined1 *)((int)&pbVar26->data[0].parent + iVar31)" * (cast_expression "(undefined1 *)((int)&pbVar26->data[0].parent + iVar31)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pbVar26->data[0].parent + iVar31)" ( (binary_expression "(int)&pbVar26->data[0].parent + iVar31" (cast_expression "(int)&pbVar26->data[0].parent" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pbVar26->data[0].parent" & (field_expression "pbVar26->data[0].parent" (subscript_expression "pbVar26->data[0]" (field_expression "pbVar26->data" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + identifier) )))) = number_literal) ;) (expression_statement "puVar2 = &pbVar26->data[iVar29].token.field_0x6;" (assignment_expression "puVar2 = &pbVar26->data[iVar29].token.field_0x6" identifier = (pointer_expression "&pbVar26->data[iVar29].token.field_0x6" & (field_expression "pbVar26->data[iVar29].token.field_0x6" (field_expression "pbVar26->data[iVar29].token" (subscript_expression "pbVar26->data[iVar29]" (field_expression "pbVar26->data" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier))) ;) (expression_statement "*puVar2 = *puVar2 & 0xf3;" (assignment_expression "*puVar2 = *puVar2 & 0xf3" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 & 0xf3" (pointer_expression "*puVar2" * identifier) & number_literal)) ;) (expression_statement "pbVar43 = (bin_tree_t *)((int)pbVar26->data + iVar37 + -4);" (assignment_expression "pbVar43 = (bin_tree_t *)((int)pbVar26->data + iVar37 + -4)" identifier = (cast_expression "(bin_tree_t *)((int)pbVar26->data + iVar37 + -4)" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pbVar26->data + iVar37 + -4)" ( (binary_expression "(int)pbVar26->data + iVar37 + -4" (binary_expression "(int)pbVar26->data + iVar37" (cast_expression "(int)pbVar26->data" ( (type_descriptor "int" primitive_type) ) (field_expression "pbVar26->data" identifier -> field_identifier)) + identifier) + number_literal) )))) ;) (expression_statement "bVar47 = pbVar43 == (bin_tree_t *)0x0;" (assignment_expression "bVar47 = pbVar43 == (bin_tree_t *)0x0" identifier = (binary_expression "pbVar43 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "pbVar26->data[iVar29].first = (bin_tree_t *)0x0;" (assignment_expression "pbVar26->data[iVar29].first = (bin_tree_t *)0x0" (field_expression "pbVar26->data[iVar29].first" (subscript_expression "pbVar26->data[iVar29]" (field_expression "pbVar26->data" identifier -> field_identifier) [ identifier ]) . field_identifier) = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_b0 = preg_00->buffer;" (assignment_expression "local_b0 = preg_00->buffer" identifier = (field_expression "preg_00->buffer" identifier -> field_identifier)) ;) (expression_statement "pbVar26->data[iVar29].next = (bin_tree_t *)0x0;" (assignment_expression "pbVar26->data[iVar29].next = (bin_tree_t *)0x0" (field_expression "pbVar26->data[iVar29].next" (subscript_expression "pbVar26->data[iVar29]" (field_expression "pbVar26->data" identifier -> field_identifier) [ identifier ]) . field_identifier) = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar26->data[iVar29].node_idx = -1;" (assignment_expression "pbVar26->data[iVar29].node_idx = -1" (field_expression "pbVar26->data[iVar29].node_idx" (subscript_expression "pbVar26->data[iVar29]" (field_expression "pbVar26->data" identifier -> field_identifier) [ identifier ]) . field_identifier) = number_literal) ;) (expression_statement "pbVar22 = pbVar43;" (assignment_expression "pbVar22 = pbVar43" identifier = identifier) ;) (if_statement "if (pbVar16 != (bin_tree_t *)0x0) {\nLAB_00027e67:\n          iVar29 = prVar7->str_tree_storage_idx;\n          if (iVar29 == 0x1f) {\n            pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n            if (pbVar26 == (bin_tree_storage_t *)0x0) goto LAB_00028d28;\n            iVar32 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            pbVar26->next = prVar7->str_tree_storage;\n            iVar29 = 0;\n            prVar7->str_tree_storage = pbVar26;\n          }\n          else {\n            iVar32 = iVar29 + 1;\n            local_98 = iVar29 * 0x20 + 4;\n            local_94 = iVar29 * 0x20 + 0x18;\n            pbVar26 = prVar7->str_tree_storage;\n          }\n          prVar7->str_tree_storage_idx = iVar32;\n          pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n          pbVar22 = (bin_tree_t *)((int)pbVar26->data + local_98 + -4);\n          pbVar26->data[iVar29].left = pbVar16;\n          pbVar26->data[iVar29].right = pbVar43;\n          *(undefined1 *)((int)&pbVar26->data[0].parent + local_94) = 0x10;\n          puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n          *puVar2 = *puVar2 & 0xf3;\n          pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].node_idx = -1;\n          bVar47 = (bool)(bVar47 | pbVar22 == (bin_tree_t *)0x0);\n          pbVar16->parent = pbVar22;\n          if (pbVar43 != (bin_tree_t *)0x0) {\n            pbVar43->parent = pbVar22;\n          }\n        }" if (parenthesized_expression "(pbVar16 != (bin_tree_t *)0x0)" ( (binary_expression "pbVar16 != (bin_tree_t *)0x0" identifier != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00027e67:\n          iVar29 = prVar7->str_tree_storage_idx;\n          if (iVar29 == 0x1f) {\n            pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n            if (pbVar26 == (bin_tree_storage_t *)0x0) goto LAB_00028d28;\n            iVar32 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            pbVar26->next = prVar7->str_tree_storage;\n            iVar29 = 0;\n            prVar7->str_tree_storage = pbVar26;\n          }\n          else {\n            iVar32 = iVar29 + 1;\n            local_98 = iVar29 * 0x20 + 4;\n            local_94 = iVar29 * 0x20 + 0x18;\n            pbVar26 = prVar7->str_tree_storage;\n          }\n          prVar7->str_tree_storage_idx = iVar32;\n          pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;\n          pbVar22 = (bin_tree_t *)((int)pbVar26->data + local_98 + -4);\n          pbVar26->data[iVar29].left = pbVar16;\n          pbVar26->data[iVar29].right = pbVar43;\n          *(undefined1 *)((int)&pbVar26->data[0].parent + local_94) = 0x10;\n          puVar2 = &pbVar26->data[iVar29].token.field_0x6;\n          *puVar2 = *puVar2 & 0xf3;\n          pbVar26->data[iVar29].first = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].next = (bin_tree_t *)0x0;\n          pbVar26->data[iVar29].node_idx = -1;\n          bVar47 = (bool)(bVar47 | pbVar22 == (bin_tree_t *)0x0);\n          pbVar16->parent = pbVar22;\n          if (pbVar43 != (bin_tree_t *)0x0) {\n            pbVar43->parent = pbVar22;\n          }\n        }" { (labeled_statement "LAB_00027e67:\n          iVar29 = prVar7->str_tree_storage_idx;" statement_identifier : (expression_statement "iVar29 = prVar7->str_tree_storage_idx;" (assignment_expression "iVar29 = prVar7->str_tree_storage_idx" identifier = (field_expression "prVar7->str_tree_storage_idx" identifier -> field_identifier)) ;)) (if_statement "if (iVar29 == 0x1f) {\n            pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n            if (pbVar26 == (bin_tree_storage_t *)0x0) goto LAB_00028d28;\n            iVar32 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            pbVar26->next = prVar7->str_tree_storage;\n            iVar29 = 0;\n            prVar7->str_tree_storage = pbVar26;\n          }\n          else {\n            iVar32 = iVar29 + 1;\n            local_98 = iVar29 * 0x20 + 4;\n            local_94 = iVar29 * 0x20 + 0x18;\n            pbVar26 = prVar7->str_tree_storage;\n          }" if (parenthesized_expression "(iVar29 == 0x1f)" ( (binary_expression "iVar29 == 0x1f" identifier == number_literal) )) (compound_statement "{\n            pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);\n            if (pbVar26 == (bin_tree_storage_t *)0x0) goto LAB_00028d28;\n            iVar32 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            pbVar26->next = prVar7->str_tree_storage;\n            iVar29 = 0;\n            prVar7->str_tree_storage = pbVar26;\n          }" { (expression_statement "pbVar26 = (bin_tree_storage_t *)malloc(0x3e4);" (assignment_expression "pbVar26 = (bin_tree_storage_t *)malloc(0x3e4)" identifier = (cast_expression "(bin_tree_storage_t *)malloc(0x3e4)" ( (type_descriptor "bin_tree_storage_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x3e4)" identifier (argument_list "(0x3e4)" ( number_literal ))))) ;) (if_statement "if (pbVar26 == (bin_tree_storage_t *)0x0) goto LAB_00028d28;" if (parenthesized_expression "(pbVar26 == (bin_tree_storage_t *)0x0)" ( (binary_expression "pbVar26 == (bin_tree_storage_t *)0x0" identifier == (cast_expression "(bin_tree_storage_t *)0x0" ( (type_descriptor "bin_tree_storage_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00028d28;" goto statement_identifier ;)) (expression_statement "iVar32 = 1;" (assignment_expression "iVar32 = 1" identifier = number_literal) ;) (expression_statement "local_94 = 0x18;" (assignment_expression "local_94 = 0x18" identifier = number_literal) ;) (expression_statement "local_98 = 4;" (assignment_expression "local_98 = 4" identifier = number_literal) ;) (expression_statement "pbVar26->next = prVar7->str_tree_storage;" (assignment_expression "pbVar26->next = prVar7->str_tree_storage" (field_expression "pbVar26->next" identifier -> field_identifier) = (field_expression "prVar7->str_tree_storage" identifier -> field_identifier)) ;) (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (expression_statement "prVar7->str_tree_storage = pbVar26;" (assignment_expression "prVar7->str_tree_storage = pbVar26" (field_expression "prVar7->str_tree_storage" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n            iVar32 = iVar29 + 1;\n            local_98 = iVar29 * 0x20 + 4;\n            local_94 = iVar29 * 0x20 + 0x18;\n            pbVar26 = prVar7->str_tree_storage;\n          }" else (compound_statement "{\n            iVar32 = iVar29 + 1;\n            local_98 = iVar29 * 0x20 + 4;\n            local_94 = iVar29 * 0x20 + 0x18;\n            pbVar26 = prVar7->str_tree_storage;\n          }" { (expression_statement "iVar32 = iVar29 + 1;" (assignment_expression "iVar32 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (expression_statement "local_98 = iVar29 * 0x20 + 4;" (assignment_expression "local_98 = iVar29 * 0x20 + 4" identifier = (binary_expression "iVar29 * 0x20 + 4" (binary_expression "iVar29 * 0x20" identifier * number_literal) + number_literal)) ;) (expression_statement "local_94 = iVar29 * 0x20 + 0x18;" (assignment_expression "local_94 = iVar29 * 0x20 + 0x18" identifier = (binary_expression "iVar29 * 0x20 + 0x18" (binary_expression "iVar29 * 0x20" identifier * number_literal) + number_literal)) ;) (expression_statement "pbVar26 = prVar7->str_tree_storage;" (assignment_expression "pbVar26 = prVar7->str_tree_storage" identifier = (field_expression "prVar7->str_tree_storage" identifier -> field_identifier)) ;) }))) (expression_statement "prVar7->str_tree_storage_idx = iVar32;" (assignment_expression "prVar7->str_tree_storage_idx = iVar32" (field_expression "prVar7->str_tree_storage_idx" identifier -> field_identifier) = identifier) ;) (expression_statement "pbVar26->data[iVar29].parent = (bin_tree_t *)0x0;" (assignment_expression "pbVar26->data[iVar29].parent = (bin_tree_t *)0x0" (field_expression "pbVar26->data[iVar29].parent" (subscript_expression "pbVar26->data[iVar29]" (field_expression "pbVar26->data" identifier -> field_identifier) [ identifier ]) . field_identifier) = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar22 = (bin_tree_t *)((int)pbVar26->data + local_98 + -4);" (assignment_expression "pbVar22 = (bin_tree_t *)((int)pbVar26->data + local_98 + -4)" identifier = (cast_expression "(bin_tree_t *)((int)pbVar26->data + local_98 + -4)" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pbVar26->data + local_98 + -4)" ( (binary_expression "(int)pbVar26->data + local_98 + -4" (binary_expression "(int)pbVar26->data + local_98" (cast_expression "(int)pbVar26->data" ( (type_descriptor "int" primitive_type) ) (field_expression "pbVar26->data" identifier -> field_identifier)) + identifier) + number_literal) )))) ;) (expression_statement "pbVar26->data[iVar29].left = pbVar16;" (assignment_expression "pbVar26->data[iVar29].left = pbVar16" (field_expression "pbVar26->data[iVar29].left" (subscript_expression "pbVar26->data[iVar29]" (field_expression "pbVar26->data" identifier -> field_identifier) [ identifier ]) . field_identifier) = identifier) ;) (expression_statement "pbVar26->data[iVar29].right = pbVar43;" (assignment_expression "pbVar26->data[iVar29].right = pbVar43" (field_expression "pbVar26->data[iVar29].right" (subscript_expression "pbVar26->data[iVar29]" (field_expression "pbVar26->data" identifier -> field_identifier) [ identifier ]) . field_identifier) = identifier) ;) (expression_statement "*(undefined1 *)((int)&pbVar26->data[0].parent + local_94) = 0x10;" (assignment_expression "*(undefined1 *)((int)&pbVar26->data[0].parent + local_94) = 0x10" (pointer_expression "*(undefined1 *)((int)&pbVar26->data[0].parent + local_94)" * (cast_expression "(undefined1 *)((int)&pbVar26->data[0].parent + local_94)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pbVar26->data[0].parent + local_94)" ( (binary_expression "(int)&pbVar26->data[0].parent + local_94" (cast_expression "(int)&pbVar26->data[0].parent" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pbVar26->data[0].parent" & (field_expression "pbVar26->data[0].parent" (subscript_expression "pbVar26->data[0]" (field_expression "pbVar26->data" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + identifier) )))) = number_literal) ;) (expression_statement "puVar2 = &pbVar26->data[iVar29].token.field_0x6;" (assignment_expression "puVar2 = &pbVar26->data[iVar29].token.field_0x6" identifier = (pointer_expression "&pbVar26->data[iVar29].token.field_0x6" & (field_expression "pbVar26->data[iVar29].token.field_0x6" (field_expression "pbVar26->data[iVar29].token" (subscript_expression "pbVar26->data[iVar29]" (field_expression "pbVar26->data" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier))) ;) (expression_statement "*puVar2 = *puVar2 & 0xf3;" (assignment_expression "*puVar2 = *puVar2 & 0xf3" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 & 0xf3" (pointer_expression "*puVar2" * identifier) & number_literal)) ;) (expression_statement "pbVar26->data[iVar29].first = (bin_tree_t *)0x0;" (assignment_expression "pbVar26->data[iVar29].first = (bin_tree_t *)0x0" (field_expression "pbVar26->data[iVar29].first" (subscript_expression "pbVar26->data[iVar29]" (field_expression "pbVar26->data" identifier -> field_identifier) [ identifier ]) . field_identifier) = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar26->data[iVar29].next = (bin_tree_t *)0x0;" (assignment_expression "pbVar26->data[iVar29].next = (bin_tree_t *)0x0" (field_expression "pbVar26->data[iVar29].next" (subscript_expression "pbVar26->data[iVar29]" (field_expression "pbVar26->data" identifier -> field_identifier) [ identifier ]) . field_identifier) = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar26->data[iVar29].node_idx = -1;" (assignment_expression "pbVar26->data[iVar29].node_idx = -1" (field_expression "pbVar26->data[iVar29].node_idx" (subscript_expression "pbVar26->data[iVar29]" (field_expression "pbVar26->data" identifier -> field_identifier) [ identifier ]) . field_identifier) = number_literal) ;) (expression_statement "bVar47 = (bool)(bVar47 | pbVar22 == (bin_tree_t *)0x0);" (assignment_expression "bVar47 = (bool)(bVar47 | pbVar22 == (bin_tree_t *)0x0)" identifier = (cast_expression "(bool)(bVar47 | pbVar22 == (bin_tree_t *)0x0)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar47 | pbVar22 == (bin_tree_t *)0x0)" ( (binary_expression "bVar47 | pbVar22 == (bin_tree_t *)0x0" identifier | (binary_expression "pbVar22 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )))) ;) (expression_statement "pbVar16->parent = pbVar22;" (assignment_expression "pbVar16->parent = pbVar22" (field_expression "pbVar16->parent" identifier -> field_identifier) = identifier) ;) (if_statement "if (pbVar43 != (bin_tree_t *)0x0) {\n            pbVar43->parent = pbVar22;\n          }" if (parenthesized_expression "(pbVar43 != (bin_tree_t *)0x0)" ( (binary_expression "pbVar43 != (bin_tree_t *)0x0" identifier != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pbVar43->parent = pbVar22;\n          }" { (expression_statement "pbVar43->parent = pbVar22;" (assignment_expression "pbVar43->parent = pbVar22" (field_expression "pbVar43->parent" identifier -> field_identifier) = identifier) ;) })) })) (expression_statement "prVar7 = local_b0;" (assignment_expression "prVar7 = local_b0" identifier = identifier) ;) (if_statement "if (!bVar47) {\n          dfa->str_tree = pbVar22;\n          sVar11 = local_b0->nodes_alloc * 4;\n          __size = local_b0->nodes_alloc * 0xc;\n          pIVar17 = (Idx *)malloc(sVar11);\n          local_b0->nexts = pIVar17;\n          pIVar18 = (Idx *)malloc(sVar11);\n          local_b0->org_indices = pIVar18;\n          prVar19 = (re_node_set *)malloc(__size);\n          local_b0->edests = prVar19;\n          prVar20 = (re_node_set *)malloc(__size);\n          local_b0->eclosures = prVar20;\n          if ((((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0)) && (prVar20 != (re_node_set *)0x0)) {\n            sVar39 = preg_00->re_nsub;\n            __ptr = (size_t *)malloc(sVar39 * 4);\n            local_b0->subexp_map = (Idx *)__ptr;\n            pbVar16 = local_b0->str_tree;\n            if (__ptr != (size_t *)0x0) {\n              sVar33 = 0;\n              if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }\n              cVar27 = (pbVar16->token).field_0x4;\n              pbVar43 = pbVar16->left;\n              pbVar22 = pbVar16;\nLAB_00028010:\n              pbVar38 = pbVar22;\n              pbVar22 = pbVar43;\n              pbVar34 = pbVar22;\n              if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar27 != '\x11') goto joined_r0x00028003;\n              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          err = _REG_ESPACE;\n          goto LAB_00027c60;\n        }" if (parenthesized_expression "(!bVar47)" ( (unary_expression "!bVar47" ! identifier) )) (compound_statement "{\n          dfa->str_tree = pbVar22;\n          sVar11 = local_b0->nodes_alloc * 4;\n          __size = local_b0->nodes_alloc * 0xc;\n          pIVar17 = (Idx *)malloc(sVar11);\n          local_b0->nexts = pIVar17;\n          pIVar18 = (Idx *)malloc(sVar11);\n          local_b0->org_indices = pIVar18;\n          prVar19 = (re_node_set *)malloc(__size);\n          local_b0->edests = prVar19;\n          prVar20 = (re_node_set *)malloc(__size);\n          local_b0->eclosures = prVar20;\n          if ((((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0)) && (prVar20 != (re_node_set *)0x0)) {\n            sVar39 = preg_00->re_nsub;\n            __ptr = (size_t *)malloc(sVar39 * 4);\n            local_b0->subexp_map = (Idx *)__ptr;\n            pbVar16 = local_b0->str_tree;\n            if (__ptr != (size_t *)0x0) {\n              sVar33 = 0;\n              if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }\n              cVar27 = (pbVar16->token).field_0x4;\n              pbVar43 = pbVar16->left;\n              pbVar22 = pbVar16;\nLAB_00028010:\n              pbVar38 = pbVar22;\n              pbVar22 = pbVar43;\n              pbVar34 = pbVar22;\n              if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar27 != '\x11') goto joined_r0x00028003;\n              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          err = _REG_ESPACE;\n          goto LAB_00027c60;\n        }" { (expression_statement "dfa->str_tree = pbVar22;" (assignment_expression "dfa->str_tree = pbVar22" (field_expression "dfa->str_tree" identifier -> field_identifier) = identifier) ;) (expression_statement "sVar11 = local_b0->nodes_alloc * 4;" (assignment_expression "sVar11 = local_b0->nodes_alloc * 4" identifier = (binary_expression "local_b0->nodes_alloc * 4" (field_expression "local_b0->nodes_alloc" identifier -> field_identifier) * number_literal)) ;) (expression_statement "__size = local_b0->nodes_alloc * 0xc;" (assignment_expression "__size = local_b0->nodes_alloc * 0xc" identifier = (binary_expression "local_b0->nodes_alloc * 0xc" (field_expression "local_b0->nodes_alloc" identifier -> field_identifier) * number_literal)) ;) (expression_statement "pIVar17 = (Idx *)malloc(sVar11);" (assignment_expression "pIVar17 = (Idx *)malloc(sVar11)" identifier = (cast_expression "(Idx *)malloc(sVar11)" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar11)" identifier (argument_list "(sVar11)" ( identifier ))))) ;) (expression_statement "local_b0->nexts = pIVar17;" (assignment_expression "local_b0->nexts = pIVar17" (field_expression "local_b0->nexts" identifier -> field_identifier) = identifier) ;) (expression_statement "pIVar18 = (Idx *)malloc(sVar11);" (assignment_expression "pIVar18 = (Idx *)malloc(sVar11)" identifier = (cast_expression "(Idx *)malloc(sVar11)" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar11)" identifier (argument_list "(sVar11)" ( identifier ))))) ;) (expression_statement "local_b0->org_indices = pIVar18;" (assignment_expression "local_b0->org_indices = pIVar18" (field_expression "local_b0->org_indices" identifier -> field_identifier) = identifier) ;) (expression_statement "prVar19 = (re_node_set *)malloc(__size);" (assignment_expression "prVar19 = (re_node_set *)malloc(__size)" identifier = (cast_expression "(re_node_set *)malloc(__size)" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(__size)" identifier (argument_list "(__size)" ( identifier ))))) ;) (expression_statement "local_b0->edests = prVar19;" (assignment_expression "local_b0->edests = prVar19" (field_expression "local_b0->edests" identifier -> field_identifier) = identifier) ;) (expression_statement "prVar20 = (re_node_set *)malloc(__size);" (assignment_expression "prVar20 = (re_node_set *)malloc(__size)" identifier = (cast_expression "(re_node_set *)malloc(__size)" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(__size)" identifier (argument_list "(__size)" ( identifier ))))) ;) (expression_statement "local_b0->eclosures = prVar20;" (assignment_expression "local_b0->eclosures = prVar20" (field_expression "local_b0->eclosures" identifier -> field_identifier) = identifier) ;) (if_statement "if ((((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0)) && (prVar20 != (re_node_set *)0x0)) {\n            sVar39 = preg_00->re_nsub;\n            __ptr = (size_t *)malloc(sVar39 * 4);\n            local_b0->subexp_map = (Idx *)__ptr;\n            pbVar16 = local_b0->str_tree;\n            if (__ptr != (size_t *)0x0) {\n              sVar33 = 0;\n              if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }\n              cVar27 = (pbVar16->token).field_0x4;\n              pbVar43 = pbVar16->left;\n              pbVar22 = pbVar16;\nLAB_00028010:\n              pbVar38 = pbVar22;\n              pbVar22 = pbVar43;\n              pbVar34 = pbVar22;\n              if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar27 != '\x11') goto joined_r0x00028003;\n              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }" if (parenthesized_expression "((((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0)) && (prVar20 != (re_node_set *)0x0))" ( (binary_expression "(((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0)) && (prVar20 != (re_node_set *)0x0)" (parenthesized_expression "(((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0))" ( (binary_expression "((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)) &&\n              (prVar19 != (re_node_set *)0x0)" (parenthesized_expression "((pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0))" ( (binary_expression "(pIVar17 != (Idx *)0x0) && (pIVar18 != (Idx *)0x0)" (parenthesized_expression "(pIVar17 != (Idx *)0x0)" ( (binary_expression "pIVar17 != (Idx *)0x0" identifier != (cast_expression "(Idx *)0x0" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pIVar18 != (Idx *)0x0)" ( (binary_expression "pIVar18 != (Idx *)0x0" identifier != (cast_expression "(Idx *)0x0" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(prVar19 != (re_node_set *)0x0)" ( (binary_expression "prVar19 != (re_node_set *)0x0" identifier != (cast_expression "(re_node_set *)0x0" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(prVar20 != (re_node_set *)0x0)" ( (binary_expression "prVar20 != (re_node_set *)0x0" identifier != (cast_expression "(re_node_set *)0x0" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n            sVar39 = preg_00->re_nsub;\n            __ptr = (size_t *)malloc(sVar39 * 4);\n            local_b0->subexp_map = (Idx *)__ptr;\n            pbVar16 = local_b0->str_tree;\n            if (__ptr != (size_t *)0x0) {\n              sVar33 = 0;\n              if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }\n              cVar27 = (pbVar16->token).field_0x4;\n              pbVar43 = pbVar16->left;\n              pbVar22 = pbVar16;\nLAB_00028010:\n              pbVar38 = pbVar22;\n              pbVar22 = pbVar43;\n              pbVar34 = pbVar22;\n              if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar27 != '\x11') goto joined_r0x00028003;\n              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }" { (expression_statement "sVar39 = preg_00->re_nsub;" (assignment_expression "sVar39 = preg_00->re_nsub" identifier = (field_expression "preg_00->re_nsub" identifier -> field_identifier)) ;) (expression_statement "__ptr = (size_t *)malloc(sVar39 * 4);" (assignment_expression "__ptr = (size_t *)malloc(sVar39 * 4)" identifier = (cast_expression "(size_t *)malloc(sVar39 * 4)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar39 * 4)" identifier (argument_list "(sVar39 * 4)" ( (binary_expression "sVar39 * 4" identifier * number_literal) ))))) ;) (expression_statement "local_b0->subexp_map = (Idx *)__ptr;" (assignment_expression "local_b0->subexp_map = (Idx *)__ptr" (field_expression "local_b0->subexp_map" identifier -> field_identifier) = (cast_expression "(Idx *)__ptr" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar16 = local_b0->str_tree;" (assignment_expression "pbVar16 = local_b0->str_tree" identifier = (field_expression "local_b0->str_tree" identifier -> field_identifier)) ;) (if_statement "if (__ptr != (size_t *)0x0) {\n              sVar33 = 0;\n              if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }\n              cVar27 = (pbVar16->token).field_0x4;\n              pbVar43 = pbVar16->left;\n              pbVar22 = pbVar16;\nLAB_00028010:\n              pbVar38 = pbVar22;\n              pbVar22 = pbVar43;\n              pbVar34 = pbVar22;\n              if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar27 != '\x11') goto joined_r0x00028003;\n              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }" if (parenthesized_expression "(__ptr != (size_t *)0x0)" ( (binary_expression "__ptr != (size_t *)0x0" identifier != (cast_expression "(size_t *)0x0" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              sVar33 = 0;\n              if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }\n              cVar27 = (pbVar16->token).field_0x4;\n              pbVar43 = pbVar16->left;\n              pbVar22 = pbVar16;\nLAB_00028010:\n              pbVar38 = pbVar22;\n              pbVar22 = pbVar43;\n              pbVar34 = pbVar22;\n              if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar27 != '\x11') goto joined_r0x00028003;\n              if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }" { (expression_statement "sVar33 = 0;" (assignment_expression "sVar33 = 0" identifier = number_literal) ;) (if_statement "if (sVar39 != 0) {\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }" if (parenthesized_expression "(sVar39 != 0)" ( (binary_expression "sVar39 != 0" identifier != number_literal) )) (compound_statement "{\n                do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);\n              }" { (do_statement "do {\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                } while (sVar33 != sVar39);" do (compound_statement "{\n                  __ptr[sVar33] = sVar33;\n                  sVar33 = sVar33 + 1;\n                }" { (expression_statement "__ptr[sVar33] = sVar33;" (assignment_expression "__ptr[sVar33] = sVar33" (subscript_expression "__ptr[sVar33]" identifier [ identifier ]) = identifier) ;) (expression_statement "sVar33 = sVar33 + 1;" (assignment_expression "sVar33 = sVar33 + 1" identifier = (binary_expression "sVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(sVar33 != sVar39)" ( (binary_expression "sVar33 != sVar39" identifier != identifier) )) ;) })) (expression_statement "cVar27 = (pbVar16->token).field_0x4;" (assignment_expression "cVar27 = (pbVar16->token).field_0x4" identifier = (field_expression "(pbVar16->token).field_0x4" (parenthesized_expression "(pbVar16->token)" ( (field_expression "pbVar16->token" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pbVar43 = pbVar16->left;" (assignment_expression "pbVar43 = pbVar16->left" identifier = (field_expression "pbVar16->left" identifier -> field_identifier)) ;) (expression_statement "pbVar22 = pbVar16;" (assignment_expression "pbVar22 = pbVar16" identifier = identifier) ;) (labeled_statement "LAB_00028010:\n              pbVar38 = pbVar22;" statement_identifier : (expression_statement "pbVar38 = pbVar22;" (assignment_expression "pbVar38 = pbVar22" identifier = identifier) ;)) (expression_statement "pbVar22 = pbVar43;" (assignment_expression "pbVar22 = pbVar43" identifier = identifier) ;) (expression_statement "pbVar34 = pbVar22;" (assignment_expression "pbVar34 = pbVar22" identifier = identifier) ;) (if_statement "if (cVar27 == '\x04') {\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }" if (parenthesized_expression "(cVar27 == '\x04')" ( (binary_expression "cVar27 == '\x04'" identifier == (char_literal "'\x04'" ' escape_sequence ')) )) (compound_statement "{\n                aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);\n                (pbVar38->token).opr = aVar14;\n                local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);\n                goto joined_r0x00028003;\n              }" { (expression_statement "aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx);" (assignment_expression "aVar14 = *(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx)" identifier = (pointer_expression "*(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx)" * (cast_expression "(anon_union_4_5_a39f51ca_for_opr *)(__ptr + (pbVar38->token).opr.idx)" ( (type_descriptor "anon_union_4_5_a39f51ca_for_opr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + (pbVar38->token).opr.idx)" ( (binary_expression "__ptr + (pbVar38->token).opr.idx" identifier + (field_expression "(pbVar38->token).opr.idx" (field_expression "(pbVar38->token).opr" (parenthesized_expression "(pbVar38->token)" ( (field_expression "pbVar38->token" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ))))) ;) (expression_statement "(pbVar38->token).opr = aVar14;" (assignment_expression "(pbVar38->token).opr = aVar14" (field_expression "(pbVar38->token).opr" (parenthesized_expression "(pbVar38->token)" ( (field_expression "pbVar38->token" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f);" (assignment_expression "local_b0->used_bkref_map = local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f)" (field_expression "local_b0->used_bkref_map" identifier -> field_identifier) = (binary_expression "local_b0->used_bkref_map | 1 << (aVar14.c & 0x1f)" (field_expression "local_b0->used_bkref_map" identifier -> field_identifier) | (binary_expression "1 << (aVar14.c & 0x1f)" number_literal << (parenthesized_expression "(aVar14.c & 0x1f)" ( (binary_expression "aVar14.c & 0x1f" (field_expression "aVar14.c" identifier . field_identifier) & number_literal) ))))) ;) (goto_statement "goto joined_r0x00028003;" goto statement_identifier ;) })) (if_statement "if (cVar27 != '\x11') goto joined_r0x00028003;" if (parenthesized_expression "(cVar27 != '\x11')" ( (binary_expression "cVar27 != '\x11'" identifier != (char_literal "'\x11'" ' escape_sequence ')) )) (goto_statement "goto joined_r0x00028003;" goto statement_identifier ;)) (if_statement "if (pbVar22 != (bin_tree_t *)0x0) goto code_r0x00028148;" if (parenthesized_expression "(pbVar22 != (bin_tree_t *)0x0)" ( (binary_expression "pbVar22 != (bin_tree_t *)0x0" identifier != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto code_r0x00028148;" goto statement_identifier ;)) (goto_statement "goto LAB_00028038;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002809c;" goto statement_identifier ;) })) (expression_statement "err = _REG_ESPACE;" (assignment_expression "err = _REG_ESPACE" identifier = identifier) ;) (goto_statement "goto LAB_00027c60;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00028d28:\n      err = _REG_ESPACE;" statement_identifier : (expression_statement "err = _REG_ESPACE;" (assignment_expression "err = _REG_ESPACE" identifier = identifier) ;)) (expression_statement "dfa->str_tree = (bin_tree_t *)0x0;" (assignment_expression "dfa->str_tree = (bin_tree_t *)0x0" (field_expression "dfa->str_tree" identifier -> field_identifier) = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00027c60;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000282d0:\n  err = _REG_ESPACE;" statement_identifier : (expression_statement "err = _REG_ESPACE;" (assignment_expression "err = _REG_ESPACE" identifier = identifier) ;)) (goto_statement "goto LAB_000282d8;" goto statement_identifier ;) (labeled_statement "code_r0x00028148:\n  cVar27 = (pbVar22->token).field_0x4;" statement_identifier : (expression_statement "cVar27 = (pbVar22->token).field_0x4;" (assignment_expression "cVar27 = (pbVar22->token).field_0x4" identifier = (field_expression "(pbVar22->token).field_0x4" (parenthesized_expression "(pbVar22->token)" ( (field_expression "pbVar22->token" identifier -> field_identifier) )) . field_identifier)) ;)) (expression_statement "pbVar34 = pbVar22->left;" (assignment_expression "pbVar34 = pbVar22->left" identifier = (field_expression "pbVar22->left" identifier -> field_identifier)) ;) (expression_statement "pbVar43 = pbVar34;" (assignment_expression "pbVar43 = pbVar34" identifier = identifier) ;) (if_statement "if (cVar27 == '\x11') {\n    iVar29 = (pbVar22->token).opr.idx;\n    pbVar38->left = pbVar34;\n    if (pbVar34 != (bin_tree_t *)0x0) {\n      pbVar34->parent = pbVar38;\n    }\n    __ptr[iVar29] = __ptr[(pbVar38->token).opr.idx];\n    if (iVar29 < 0x20) {\n      local_b0->used_bkref_map = local_b0->used_bkref_map & ~(1 << ((byte)iVar29 & 0x1f));\n    }\njoined_r0x00028003:\n    if (pbVar34 == (bin_tree_t *)0x0) {\nLAB_00028038:\n      pbVar43 = (bin_tree_t *)0x0;\n      while ((pbVar34 = pbVar38->right, pbVar34 == pbVar43 || (pbVar34 == (bin_tree_t *)0x0))) {\n        ppbVar8 = &pbVar38->parent;\n        pbVar43 = pbVar38;\n        pbVar38 = *ppbVar8;\n        if (*ppbVar8 == (bin_tree_t *)0x0) {\n          if (sVar39 == 0) goto LAB_00028074;\n          sVar33 = *__ptr;\n          if (sVar33 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar27 = (pbVar34->token).field_0x4;\n    pbVar43 = pbVar34->left;\n    pbVar22 = pbVar34;\n  }" if (parenthesized_expression "(cVar27 == '\x11')" ( (binary_expression "cVar27 == '\x11'" identifier == (char_literal "'\x11'" ' escape_sequence ')) )) (compound_statement "{\n    iVar29 = (pbVar22->token).opr.idx;\n    pbVar38->left = pbVar34;\n    if (pbVar34 != (bin_tree_t *)0x0) {\n      pbVar34->parent = pbVar38;\n    }\n    __ptr[iVar29] = __ptr[(pbVar38->token).opr.idx];\n    if (iVar29 < 0x20) {\n      local_b0->used_bkref_map = local_b0->used_bkref_map & ~(1 << ((byte)iVar29 & 0x1f));\n    }\njoined_r0x00028003:\n    if (pbVar34 == (bin_tree_t *)0x0) {\nLAB_00028038:\n      pbVar43 = (bin_tree_t *)0x0;\n      while ((pbVar34 = pbVar38->right, pbVar34 == pbVar43 || (pbVar34 == (bin_tree_t *)0x0))) {\n        ppbVar8 = &pbVar38->parent;\n        pbVar43 = pbVar38;\n        pbVar38 = *ppbVar8;\n        if (*ppbVar8 == (bin_tree_t *)0x0) {\n          if (sVar39 == 0) goto LAB_00028074;\n          sVar33 = *__ptr;\n          if (sVar33 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar27 = (pbVar34->token).field_0x4;\n    pbVar43 = pbVar34->left;\n    pbVar22 = pbVar34;\n  }" { (expression_statement "iVar29 = (pbVar22->token).opr.idx;" (assignment_expression "iVar29 = (pbVar22->token).opr.idx" identifier = (field_expression "(pbVar22->token).opr.idx" (field_expression "(pbVar22->token).opr" (parenthesized_expression "(pbVar22->token)" ( (field_expression "pbVar22->token" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pbVar38->left = pbVar34;" (assignment_expression "pbVar38->left = pbVar34" (field_expression "pbVar38->left" identifier -> field_identifier) = identifier) ;) (if_statement "if (pbVar34 != (bin_tree_t *)0x0) {\n      pbVar34->parent = pbVar38;\n    }" if (parenthesized_expression "(pbVar34 != (bin_tree_t *)0x0)" ( (binary_expression "pbVar34 != (bin_tree_t *)0x0" identifier != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pbVar34->parent = pbVar38;\n    }" { (expression_statement "pbVar34->parent = pbVar38;" (assignment_expression "pbVar34->parent = pbVar38" (field_expression "pbVar34->parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "__ptr[iVar29] = __ptr[(pbVar38->token).opr.idx];" (assignment_expression "__ptr[iVar29] = __ptr[(pbVar38->token).opr.idx]" (subscript_expression "__ptr[iVar29]" identifier [ identifier ]) = (subscript_expression "__ptr[(pbVar38->token).opr.idx]" identifier [ (field_expression "(pbVar38->token).opr.idx" (field_expression "(pbVar38->token).opr" (parenthesized_expression "(pbVar38->token)" ( (field_expression "pbVar38->token" identifier -> field_identifier) )) . field_identifier) . field_identifier) ])) ;) (if_statement "if (iVar29 < 0x20) {\n      local_b0->used_bkref_map = local_b0->used_bkref_map & ~(1 << ((byte)iVar29 & 0x1f));\n    }" if (parenthesized_expression "(iVar29 < 0x20)" ( (binary_expression "iVar29 < 0x20" identifier < number_literal) )) (compound_statement "{\n      local_b0->used_bkref_map = local_b0->used_bkref_map & ~(1 << ((byte)iVar29 & 0x1f));\n    }" { (expression_statement "local_b0->used_bkref_map = local_b0->used_bkref_map & ~(1 << ((byte)iVar29 & 0x1f));" (assignment_expression "local_b0->used_bkref_map = local_b0->used_bkref_map & ~(1 << ((byte)iVar29 & 0x1f))" (field_expression "local_b0->used_bkref_map" identifier -> field_identifier) = (binary_expression "local_b0->used_bkref_map & ~(1 << ((byte)iVar29 & 0x1f))" (field_expression "local_b0->used_bkref_map" identifier -> field_identifier) & (unary_expression "~(1 << ((byte)iVar29 & 0x1f))" ~ (parenthesized_expression "(1 << ((byte)iVar29 & 0x1f))" ( (binary_expression "1 << ((byte)iVar29 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar29 & 0x1f)" ( (binary_expression "(byte)iVar29 & 0x1f" (cast_expression "(byte)iVar29" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) })) (labeled_statement "joined_r0x00028003:\n    if (pbVar34 == (bin_tree_t *)0x0) {\nLAB_00028038:\n      pbVar43 = (bin_tree_t *)0x0;\n      while ((pbVar34 = pbVar38->right, pbVar34 == pbVar43 || (pbVar34 == (bin_tree_t *)0x0))) {\n        ppbVar8 = &pbVar38->parent;\n        pbVar43 = pbVar38;\n        pbVar38 = *ppbVar8;\n        if (*ppbVar8 == (bin_tree_t *)0x0) {\n          if (sVar39 == 0) goto LAB_00028074;\n          sVar33 = *__ptr;\n          if (sVar33 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }" statement_identifier : (if_statement "if (pbVar34 == (bin_tree_t *)0x0) {\nLAB_00028038:\n      pbVar43 = (bin_tree_t *)0x0;\n      while ((pbVar34 = pbVar38->right, pbVar34 == pbVar43 || (pbVar34 == (bin_tree_t *)0x0))) {\n        ppbVar8 = &pbVar38->parent;\n        pbVar43 = pbVar38;\n        pbVar38 = *ppbVar8;\n        if (*ppbVar8 == (bin_tree_t *)0x0) {\n          if (sVar39 == 0) goto LAB_00028074;\n          sVar33 = *__ptr;\n          if (sVar33 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }" if (parenthesized_expression "(pbVar34 == (bin_tree_t *)0x0)" ( (binary_expression "pbVar34 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00028038:\n      pbVar43 = (bin_tree_t *)0x0;\n      while ((pbVar34 = pbVar38->right, pbVar34 == pbVar43 || (pbVar34 == (bin_tree_t *)0x0))) {\n        ppbVar8 = &pbVar38->parent;\n        pbVar43 = pbVar38;\n        pbVar38 = *ppbVar8;\n        if (*ppbVar8 == (bin_tree_t *)0x0) {\n          if (sVar39 == 0) goto LAB_00028074;\n          sVar33 = *__ptr;\n          if (sVar33 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }" { (labeled_statement "LAB_00028038:\n      pbVar43 = (bin_tree_t *)0x0;" statement_identifier : (expression_statement "pbVar43 = (bin_tree_t *)0x0;" (assignment_expression "pbVar43 = (bin_tree_t *)0x0" identifier = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (while_statement "while ((pbVar34 = pbVar38->right, pbVar34 == pbVar43 || (pbVar34 == (bin_tree_t *)0x0))) {\n        ppbVar8 = &pbVar38->parent;\n        pbVar43 = pbVar38;\n        pbVar38 = *ppbVar8;\n        if (*ppbVar8 == (bin_tree_t *)0x0) {\n          if (sVar39 == 0) goto LAB_00028074;\n          sVar33 = *__ptr;\n          if (sVar33 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }" while (parenthesized_expression "((pbVar34 = pbVar38->right, pbVar34 == pbVar43 || (pbVar34 == (bin_tree_t *)0x0)))" ( (parenthesized_expression "(pbVar34 = pbVar38->right, pbVar34 == pbVar43 || (pbVar34 == (bin_tree_t *)0x0))" ( (comma_expression "pbVar34 = pbVar38->right, pbVar34 == pbVar43 || (pbVar34 == (bin_tree_t *)0x0)" (assignment_expression "pbVar34 = pbVar38->right" identifier = (field_expression "pbVar38->right" identifier -> field_identifier)) , (binary_expression "pbVar34 == pbVar43 || (pbVar34 == (bin_tree_t *)0x0)" (binary_expression "pbVar34 == pbVar43" identifier == identifier) || (parenthesized_expression "(pbVar34 == (bin_tree_t *)0x0)" ( (binary_expression "pbVar34 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) )) )) (compound_statement "{\n        ppbVar8 = &pbVar38->parent;\n        pbVar43 = pbVar38;\n        pbVar38 = *ppbVar8;\n        if (*ppbVar8 == (bin_tree_t *)0x0) {\n          if (sVar39 == 0) goto LAB_00028074;\n          sVar33 = *__ptr;\n          if (sVar33 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }" { (expression_statement "ppbVar8 = &pbVar38->parent;" (assignment_expression "ppbVar8 = &pbVar38->parent" identifier = (pointer_expression "&pbVar38->parent" & (field_expression "pbVar38->parent" identifier -> field_identifier))) ;) (expression_statement "pbVar43 = pbVar38;" (assignment_expression "pbVar43 = pbVar38" identifier = identifier) ;) (expression_statement "pbVar38 = *ppbVar8;" (assignment_expression "pbVar38 = *ppbVar8" identifier = (pointer_expression "*ppbVar8" * identifier)) ;) (if_statement "if (*ppbVar8 == (bin_tree_t *)0x0) {\n          if (sVar39 == 0) goto LAB_00028074;\n          sVar33 = *__ptr;\n          if (sVar33 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }" if (parenthesized_expression "(*ppbVar8 == (bin_tree_t *)0x0)" ( (binary_expression "*ppbVar8 == (bin_tree_t *)0x0" (pointer_expression "*ppbVar8" * identifier) == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (sVar39 == 0) goto LAB_00028074;\n          sVar33 = *__ptr;\n          if (sVar33 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }" { (if_statement "if (sVar39 == 0) goto LAB_00028074;" if (parenthesized_expression "(sVar39 == 0)" ( (binary_expression "sVar39 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00028074;" goto statement_identifier ;)) (expression_statement "sVar33 = *__ptr;" (assignment_expression "sVar33 = *__ptr" identifier = (pointer_expression "*__ptr" * identifier)) ;) (if_statement "if (sVar33 == 0) goto LAB_0002806d;" if (parenthesized_expression "(sVar33 == 0)" ( (binary_expression "sVar33 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002806d;" goto statement_identifier ;)) (goto_statement "goto LAB_0002809c;" goto statement_identifier ;) })) })) }))) (expression_statement "cVar27 = (pbVar34->token).field_0x4;" (assignment_expression "cVar27 = (pbVar34->token).field_0x4" identifier = (field_expression "(pbVar34->token).field_0x4" (parenthesized_expression "(pbVar34->token)" ( (field_expression "pbVar34->token" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pbVar43 = pbVar34->left;" (assignment_expression "pbVar43 = pbVar34->left" identifier = (field_expression "pbVar34->left" identifier -> field_identifier)) ;) (expression_statement "pbVar22 = pbVar34;" (assignment_expression "pbVar22 = pbVar34" identifier = identifier) ;) })) (goto_statement "goto LAB_00028010;" goto statement_identifier ;) (while_statement "while (__ptr[sVar33] == sVar33) {\nLAB_0002806d:\n    sVar33 = sVar33 + 1;\n    if (sVar33 == sVar39) goto LAB_00028074;\n  }" while (parenthesized_expression "(__ptr[sVar33] == sVar33)" ( (binary_expression "__ptr[sVar33] == sVar33" (subscript_expression "__ptr[sVar33]" identifier [ identifier ]) == identifier) )) (compound_statement "{\nLAB_0002806d:\n    sVar33 = sVar33 + 1;\n    if (sVar33 == sVar39) goto LAB_00028074;\n  }" { (labeled_statement "LAB_0002806d:\n    sVar33 = sVar33 + 1;" statement_identifier : (expression_statement "sVar33 = sVar33 + 1;" (assignment_expression "sVar33 = sVar33 + 1" identifier = (binary_expression "sVar33 + 1" identifier + number_literal)) ;)) (if_statement "if (sVar33 == sVar39) goto LAB_00028074;" if (parenthesized_expression "(sVar33 == sVar39)" ( (binary_expression "sVar33 == sVar39" identifier == identifier) )) (goto_statement "goto LAB_00028074;" goto statement_identifier ;)) })) (labeled_statement "LAB_0002809c:\n  do {\n    pbVar22 = pbVar16->left;\n    pbVar43 = pbVar16;\n    while (pbVar16 = pbVar22, pbVar16 != (bin_tree_t *)0x0) {\n      pbVar43 = pbVar16;\n      pbVar22 = pbVar16->left;\n    }\n    pbVar16 = pbVar43->right;\n  } while (pbVar16 != (bin_tree_t *)0x0);" statement_identifier : (do_statement "do {\n    pbVar22 = pbVar16->left;\n    pbVar43 = pbVar16;\n    while (pbVar16 = pbVar22, pbVar16 != (bin_tree_t *)0x0) {\n      pbVar43 = pbVar16;\n      pbVar22 = pbVar16->left;\n    }\n    pbVar16 = pbVar43->right;\n  } while (pbVar16 != (bin_tree_t *)0x0);" do (compound_statement "{\n    pbVar22 = pbVar16->left;\n    pbVar43 = pbVar16;\n    while (pbVar16 = pbVar22, pbVar16 != (bin_tree_t *)0x0) {\n      pbVar43 = pbVar16;\n      pbVar22 = pbVar16->left;\n    }\n    pbVar16 = pbVar43->right;\n  }" { (expression_statement "pbVar22 = pbVar16->left;" (assignment_expression "pbVar22 = pbVar16->left" identifier = (field_expression "pbVar16->left" identifier -> field_identifier)) ;) (expression_statement "pbVar43 = pbVar16;" (assignment_expression "pbVar43 = pbVar16" identifier = identifier) ;) (while_statement "while (pbVar16 = pbVar22, pbVar16 != (bin_tree_t *)0x0) {\n      pbVar43 = pbVar16;\n      pbVar22 = pbVar16->left;\n    }" while (parenthesized_expression "(pbVar16 = pbVar22, pbVar16 != (bin_tree_t *)0x0)" ( (comma_expression "pbVar16 = pbVar22, pbVar16 != (bin_tree_t *)0x0" (assignment_expression "pbVar16 = pbVar22" identifier = identifier) , (binary_expression "pbVar16 != (bin_tree_t *)0x0" identifier != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      pbVar43 = pbVar16;\n      pbVar22 = pbVar16->left;\n    }" { (expression_statement "pbVar43 = pbVar16;" (assignment_expression "pbVar43 = pbVar16" identifier = identifier) ;) (expression_statement "pbVar22 = pbVar16->left;" (assignment_expression "pbVar22 = pbVar16->left" identifier = (field_expression "pbVar16->left" identifier -> field_identifier)) ;) })) (expression_statement "pbVar16 = pbVar43->right;" (assignment_expression "pbVar16 = pbVar43->right" identifier = (field_expression "pbVar43->right" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pbVar16 != (bin_tree_t *)0x0)" ( (binary_expression "pbVar16 != (bin_tree_t *)0x0" identifier != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (expression_statement "pbVar22 = (bin_tree_t *)0x0;" (assignment_expression "pbVar22 = (bin_tree_t *)0x0" identifier = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar16 = (bin_tree_t *)0x0;" (assignment_expression "pbVar16 = (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    current_token.opr.sbcset = (re_bitset_ptr_t)0x0;\n    if ((pbVar22 == (bin_tree_t *)0x0) || ((pbVar22->token).field_0x4 != '\x11')) {\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar22);\n      pbVar43->left = pbVar16;\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        pbVar16->parent = pbVar43;\n      }\n      pbVar16 = pbVar43->right;\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\njoined_r0x000280c8:\n        if (cVar27 == '\x11') {\n          pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16);\n          pbVar43->right = pbVar16;\n          if (pbVar16 != (bin_tree_t *)0x0) {\n            pbVar16->parent = pbVar43;\n          }\n        }\n      }\n      aVar14 = current_token.opr;\n      if (current_token.opr.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n    }\n    pbVar34 = pbVar43->parent;\n    if (pbVar34 == (bin_tree_t *)0x0) {\n      pbVar16 = local_b0->str_tree;\n      goto LAB_000281a0;\n    }\n    pbVar16 = pbVar34->right;\n    if ((pbVar16 != (bin_tree_t *)0x0) && (pbVar43 != pbVar16)) goto LAB_0002809c;\n    pbVar22 = pbVar34->left;\n    pbVar43 = pbVar34;\n  } while( true );" do (compound_statement "{\n    current_token.opr.sbcset = (re_bitset_ptr_t)0x0;\n    if ((pbVar22 == (bin_tree_t *)0x0) || ((pbVar22->token).field_0x4 != '\x11')) {\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar22);\n      pbVar43->left = pbVar16;\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        pbVar16->parent = pbVar43;\n      }\n      pbVar16 = pbVar43->right;\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\njoined_r0x000280c8:\n        if (cVar27 == '\x11') {\n          pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16);\n          pbVar43->right = pbVar16;\n          if (pbVar16 != (bin_tree_t *)0x0) {\n            pbVar16->parent = pbVar43;\n          }\n        }\n      }\n      aVar14 = current_token.opr;\n      if (current_token.opr.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n    }\n    pbVar34 = pbVar43->parent;\n    if (pbVar34 == (bin_tree_t *)0x0) {\n      pbVar16 = local_b0->str_tree;\n      goto LAB_000281a0;\n    }\n    pbVar16 = pbVar34->right;\n    if ((pbVar16 != (bin_tree_t *)0x0) && (pbVar43 != pbVar16)) goto LAB_0002809c;\n    pbVar22 = pbVar34->left;\n    pbVar43 = pbVar34;\n  }" { (expression_statement "current_token.opr.sbcset = (re_bitset_ptr_t)0x0;" (assignment_expression "current_token.opr.sbcset = (re_bitset_ptr_t)0x0" (field_expression "current_token.opr.sbcset" (field_expression "current_token.opr" identifier . field_identifier) . field_identifier) = (cast_expression "(re_bitset_ptr_t)0x0" ( (type_descriptor "re_bitset_ptr_t" type_identifier) ) number_literal)) ;) (if_statement "if ((pbVar22 == (bin_tree_t *)0x0) || ((pbVar22->token).field_0x4 != '\x11')) {\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar22);\n      pbVar43->left = pbVar16;\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        pbVar16->parent = pbVar43;\n      }\n      pbVar16 = pbVar43->right;\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\njoined_r0x000280c8:\n        if (cVar27 == '\x11') {\n          pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16);\n          pbVar43->right = pbVar16;\n          if (pbVar16 != (bin_tree_t *)0x0) {\n            pbVar16->parent = pbVar43;\n          }\n        }\n      }\n      aVar14 = current_token.opr;\n      if (current_token.opr.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n    }" if (parenthesized_expression "((pbVar22 == (bin_tree_t *)0x0) || ((pbVar22->token).field_0x4 != '\x11'))" ( (binary_expression "(pbVar22 == (bin_tree_t *)0x0) || ((pbVar22->token).field_0x4 != '\x11')" (parenthesized_expression "(pbVar22 == (bin_tree_t *)0x0)" ( (binary_expression "pbVar22 == (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 "((pbVar22->token).field_0x4 != '\x11')" ( (binary_expression "(pbVar22->token).field_0x4 != '\x11'" (field_expression "(pbVar22->token).field_0x4" (parenthesized_expression "(pbVar22->token)" ( (field_expression "pbVar22->token" identifier -> field_identifier) )) . field_identifier) != (char_literal "'\x11'" ' escape_sequence ')) ))) )) (compound_statement "{\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\n        goto joined_r0x000280c8;\n      }\n    }" { (if_statement "if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\n        goto joined_r0x000280c8;\n      }" if (parenthesized_expression "(pbVar16 != (bin_tree_t *)0x0)" ( (binary_expression "pbVar16 != (bin_tree_t *)0x0" identifier != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        cVar27 = (pbVar16->token).field_0x4;\n        goto joined_r0x000280c8;\n      }" { (expression_statement "cVar27 = (pbVar16->token).field_0x4;" (assignment_expression "cVar27 = (pbVar16->token).field_0x4" identifier = (field_expression "(pbVar16->token).field_0x4" (parenthesized_expression "(pbVar16->token)" ( (field_expression "pbVar16->token" identifier -> field_identifier) )) . field_identifier)) ;) (goto_statement "goto joined_r0x000280c8;" goto statement_identifier ;) })) }) (else_clause "else {\n      pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar22);\n      pbVar43->left = pbVar16;\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        pbVar16->parent = pbVar43;\n      }\n      pbVar16 = pbVar43->right;\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\njoined_r0x000280c8:\n        if (cVar27 == '\x11') {\n          pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16);\n          pbVar43->right = pbVar16;\n          if (pbVar16 != (bin_tree_t *)0x0) {\n            pbVar16->parent = pbVar43;\n          }\n        }\n      }\n      aVar14 = current_token.opr;\n      if (current_token.opr.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n    }" else (compound_statement "{\n      pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar22);\n      pbVar43->left = pbVar16;\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        pbVar16->parent = pbVar43;\n      }\n      pbVar16 = pbVar43->right;\n      if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\njoined_r0x000280c8:\n        if (cVar27 == '\x11') {\n          pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16);\n          pbVar43->right = pbVar16;\n          if (pbVar16 != (bin_tree_t *)0x0) {\n            pbVar16->parent = pbVar43;\n          }\n        }\n      }\n      aVar14 = current_token.opr;\n      if (current_token.opr.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n    }" { (expression_statement "pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar22);" (assignment_expression "pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar22)" identifier = (call_expression "lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar22)" identifier (argument_list "((reg_errcode_t *)&current_token,preg_00,pbVar22)" ( (cast_expression "(reg_errcode_t *)&current_token" ( (type_descriptor "reg_errcode_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&current_token" & identifier)) , identifier , identifier )))) ;) (expression_statement "pbVar43->left = pbVar16;" (assignment_expression "pbVar43->left = pbVar16" (field_expression "pbVar43->left" identifier -> field_identifier) = identifier) ;) (if_statement "if (pbVar16 != (bin_tree_t *)0x0) {\n        pbVar16->parent = pbVar43;\n      }" if (parenthesized_expression "(pbVar16 != (bin_tree_t *)0x0)" ( (binary_expression "pbVar16 != (bin_tree_t *)0x0" identifier != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pbVar16->parent = pbVar43;\n      }" { (expression_statement "pbVar16->parent = pbVar43;" (assignment_expression "pbVar16->parent = pbVar43" (field_expression "pbVar16->parent" identifier -> field_identifier) = identifier) ;) })) (expression_statement "pbVar16 = pbVar43->right;" (assignment_expression "pbVar16 = pbVar43->right" identifier = (field_expression "pbVar43->right" identifier -> field_identifier)) ;) (if_statement "if (pbVar16 != (bin_tree_t *)0x0) {\n        cVar27 = (pbVar16->token).field_0x4;\njoined_r0x000280c8:\n        if (cVar27 == '\x11') {\n          pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16);\n          pbVar43->right = pbVar16;\n          if (pbVar16 != (bin_tree_t *)0x0) {\n            pbVar16->parent = pbVar43;\n          }\n        }\n      }" if (parenthesized_expression "(pbVar16 != (bin_tree_t *)0x0)" ( (binary_expression "pbVar16 != (bin_tree_t *)0x0" identifier != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        cVar27 = (pbVar16->token).field_0x4;\njoined_r0x000280c8:\n        if (cVar27 == '\x11') {\n          pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16);\n          pbVar43->right = pbVar16;\n          if (pbVar16 != (bin_tree_t *)0x0) {\n            pbVar16->parent = pbVar43;\n          }\n        }\n      }" { (expression_statement "cVar27 = (pbVar16->token).field_0x4;" (assignment_expression "cVar27 = (pbVar16->token).field_0x4" identifier = (field_expression "(pbVar16->token).field_0x4" (parenthesized_expression "(pbVar16->token)" ( (field_expression "pbVar16->token" identifier -> field_identifier) )) . field_identifier)) ;) (labeled_statement "joined_r0x000280c8:\n        if (cVar27 == '\x11') {\n          pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16);\n          pbVar43->right = pbVar16;\n          if (pbVar16 != (bin_tree_t *)0x0) {\n            pbVar16->parent = pbVar43;\n          }\n        }" statement_identifier : (if_statement "if (cVar27 == '\x11') {\n          pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16);\n          pbVar43->right = pbVar16;\n          if (pbVar16 != (bin_tree_t *)0x0) {\n            pbVar16->parent = pbVar43;\n          }\n        }" if (parenthesized_expression "(cVar27 == '\x11')" ( (binary_expression "cVar27 == '\x11'" identifier == (char_literal "'\x11'" ' escape_sequence ')) )) (compound_statement "{\n          pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16);\n          pbVar43->right = pbVar16;\n          if (pbVar16 != (bin_tree_t *)0x0) {\n            pbVar16->parent = pbVar43;\n          }\n        }" { (expression_statement "pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16);" (assignment_expression "pbVar16 = lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16)" identifier = (call_expression "lower_subexp((reg_errcode_t *)&current_token,preg_00,pbVar16)" identifier (argument_list "((reg_errcode_t *)&current_token,preg_00,pbVar16)" ( (cast_expression "(reg_errcode_t *)&current_token" ( (type_descriptor "reg_errcode_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&current_token" & identifier)) , identifier , identifier )))) ;) (expression_statement "pbVar43->right = pbVar16;" (assignment_expression "pbVar43->right = pbVar16" (field_expression "pbVar43->right" identifier -> field_identifier) = identifier) ;) (if_statement "if (pbVar16 != (bin_tree_t *)0x0) {\n            pbVar16->parent = pbVar43;\n          }" if (parenthesized_expression "(pbVar16 != (bin_tree_t *)0x0)" ( (binary_expression "pbVar16 != (bin_tree_t *)0x0" identifier != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pbVar16->parent = pbVar43;\n          }" { (expression_statement "pbVar16->parent = pbVar43;" (assignment_expression "pbVar16->parent = pbVar43" (field_expression "pbVar16->parent" identifier -> field_identifier) = identifier) ;) })) }))) })) (expression_statement "aVar14 = current_token.opr;" (assignment_expression "aVar14 = current_token.opr" identifier = (field_expression "current_token.opr" identifier . field_identifier)) ;) (if_statement "if (current_token.opr.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;" if (parenthesized_expression "(current_token.opr.sbcset != (re_bitset_ptr_t)0x0)" ( (binary_expression "current_token.opr.sbcset != (re_bitset_ptr_t)0x0" (field_expression "current_token.opr.sbcset" (field_expression "current_token.opr" identifier . field_identifier) . field_identifier) != (cast_expression "(re_bitset_ptr_t)0x0" ( (type_descriptor "re_bitset_ptr_t" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00028335;" goto statement_identifier ;)) }))) (expression_statement "pbVar34 = pbVar43->parent;" (assignment_expression "pbVar34 = pbVar43->parent" identifier = (field_expression "pbVar43->parent" identifier -> field_identifier)) ;) (if_statement "if (pbVar34 == (bin_tree_t *)0x0) {\n      pbVar16 = local_b0->str_tree;\n      goto LAB_000281a0;\n    }" if (parenthesized_expression "(pbVar34 == (bin_tree_t *)0x0)" ( (binary_expression "pbVar34 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pbVar16 = local_b0->str_tree;\n      goto LAB_000281a0;\n    }" { (expression_statement "pbVar16 = local_b0->str_tree;" (assignment_expression "pbVar16 = local_b0->str_tree" identifier = (field_expression "local_b0->str_tree" identifier -> field_identifier)) ;) (goto_statement "goto LAB_000281a0;" goto statement_identifier ;) })) (expression_statement "pbVar16 = pbVar34->right;" (assignment_expression "pbVar16 = pbVar34->right" identifier = (field_expression "pbVar34->right" identifier -> field_identifier)) ;) (if_statement "if ((pbVar16 != (bin_tree_t *)0x0) && (pbVar43 != pbVar16)) goto LAB_0002809c;" if (parenthesized_expression "((pbVar16 != (bin_tree_t *)0x0) && (pbVar43 != pbVar16))" ( (binary_expression "(pbVar16 != (bin_tree_t *)0x0) && (pbVar43 != pbVar16)" (parenthesized_expression "(pbVar16 != (bin_tree_t *)0x0)" ( (binary_expression "pbVar16 != (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 "(pbVar43 != pbVar16)" ( (binary_expression "pbVar43 != pbVar16" identifier != identifier) ))) )) (goto_statement "goto LAB_0002809c;" goto statement_identifier ;)) (expression_statement "pbVar22 = pbVar34->left;" (assignment_expression "pbVar22 = pbVar34->left" identifier = (field_expression "pbVar34->left" identifier -> field_identifier)) ;) (expression_statement "pbVar43 = pbVar34;" (assignment_expression "pbVar43 = pbVar34" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "LAB_00028074:\n  free(__ptr);" statement_identifier : (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;)) (expression_statement "local_b0->subexp_map = (Idx *)0x0;" (assignment_expression "local_b0->subexp_map = (Idx *)0x0" (field_expression "local_b0->subexp_map" identifier -> field_identifier) = (cast_expression "(Idx *)0x0" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar16 = local_b0->str_tree;" (assignment_expression "pbVar16 = local_b0->str_tree" identifier = (field_expression "local_b0->str_tree" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0002809c;" goto statement_identifier ;) (labeled_statement "LAB_000281a0:\n  do {\n    do {\n      pbVar43 = pbVar16;\n      pbVar16 = pbVar43->left;\n    } while (pbVar43->left != (bin_tree_t *)0x0);\n    pbVar16 = pbVar43->right;\n  } while (pbVar43->right != (bin_tree_t *)0x0);" statement_identifier : (do_statement "do {\n    do {\n      pbVar43 = pbVar16;\n      pbVar16 = pbVar43->left;\n    } while (pbVar43->left != (bin_tree_t *)0x0);\n    pbVar16 = pbVar43->right;\n  } while (pbVar43->right != (bin_tree_t *)0x0);" do (compound_statement "{\n    do {\n      pbVar43 = pbVar16;\n      pbVar16 = pbVar43->left;\n    } while (pbVar43->left != (bin_tree_t *)0x0);\n    pbVar16 = pbVar43->right;\n  }" { (do_statement "do {\n      pbVar43 = pbVar16;\n      pbVar16 = pbVar43->left;\n    } while (pbVar43->left != (bin_tree_t *)0x0);" do (compound_statement "{\n      pbVar43 = pbVar16;\n      pbVar16 = pbVar43->left;\n    }" { (expression_statement "pbVar43 = pbVar16;" (assignment_expression "pbVar43 = pbVar16" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar43->left;" (assignment_expression "pbVar16 = pbVar43->left" identifier = (field_expression "pbVar43->left" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pbVar43->left != (bin_tree_t *)0x0)" ( (binary_expression "pbVar43->left != (bin_tree_t *)0x0" (field_expression "pbVar43->left" identifier -> field_identifier) != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pbVar16 = pbVar43->right;" (assignment_expression "pbVar16 = pbVar43->right" identifier = (field_expression "pbVar43->right" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pbVar43->right != (bin_tree_t *)0x0)" ( (binary_expression "pbVar43->right != (bin_tree_t *)0x0" (field_expression "pbVar43->right" identifier -> field_identifier) != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (do_statement "do {\n    if ((pbVar43->token).field_0x4 == '\x10') {\n      IVar21 = pbVar43->left->node_idx;\n      pbVar43->first = pbVar43->left->first;\n      pbVar43->node_idx = IVar21;\nLAB_000281c7:\n      pbVar22 = pbVar43->parent;\n    }\n    else {\n      pbVar43->first = pbVar43;\n      token._4_4_ = in_stack_ffffff48;\n      token.opr.sbcset = in_stack_ffffff44.sbcset;\n      IVar21 = re_dfa_add_node(local_b0,token);\n      pbVar43->node_idx = IVar21;\n      if (IVar21 == -1) goto LAB_00028330;\n      if ((pbVar43->token).field_0x4 != '\f') goto LAB_000281c7;\n      *(re_context_type *)&local_b0->nodes[IVar21].field_0x4 =\n           *(uint *)&local_b0->nodes[IVar21].field_0x4 & 0xfffc00ff |\n           ((pbVar43->token).opr.ctx_type & 0x3ff) << 8;\n      pbVar22 = pbVar43->parent;\n    }\n    if (pbVar22 == (bin_tree_t *)0x0) {\n      pbVar16 = local_b0->str_tree;\n      cVar27 = (pbVar16->token).field_0x4;\n      pbVar43 = pbVar16->left;\n      pbVar22 = pbVar16;\n      if (cVar27 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    pbVar16 = pbVar22->right;\n    bVar47 = pbVar43 == pbVar16;\n    pbVar43 = pbVar22;\n  } while (pbVar16 == (bin_tree_t *)0x0 || bVar47);" do (compound_statement "{\n    if ((pbVar43->token).field_0x4 == '\x10') {\n      IVar21 = pbVar43->left->node_idx;\n      pbVar43->first = pbVar43->left->first;\n      pbVar43->node_idx = IVar21;\nLAB_000281c7:\n      pbVar22 = pbVar43->parent;\n    }\n    else {\n      pbVar43->first = pbVar43;\n      token._4_4_ = in_stack_ffffff48;\n      token.opr.sbcset = in_stack_ffffff44.sbcset;\n      IVar21 = re_dfa_add_node(local_b0,token);\n      pbVar43->node_idx = IVar21;\n      if (IVar21 == -1) goto LAB_00028330;\n      if ((pbVar43->token).field_0x4 != '\f') goto LAB_000281c7;\n      *(re_context_type *)&local_b0->nodes[IVar21].field_0x4 =\n           *(uint *)&local_b0->nodes[IVar21].field_0x4 & 0xfffc00ff |\n           ((pbVar43->token).opr.ctx_type & 0x3ff) << 8;\n      pbVar22 = pbVar43->parent;\n    }\n    if (pbVar22 == (bin_tree_t *)0x0) {\n      pbVar16 = local_b0->str_tree;\n      cVar27 = (pbVar16->token).field_0x4;\n      pbVar43 = pbVar16->left;\n      pbVar22 = pbVar16;\n      if (cVar27 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    pbVar16 = pbVar22->right;\n    bVar47 = pbVar43 == pbVar16;\n    pbVar43 = pbVar22;\n  }" { (if_statement "if ((pbVar43->token).field_0x4 == '\x10') {\n      IVar21 = pbVar43->left->node_idx;\n      pbVar43->first = pbVar43->left->first;\n      pbVar43->node_idx = IVar21;\nLAB_000281c7:\n      pbVar22 = pbVar43->parent;\n    }\n    else {\n      pbVar43->first = pbVar43;\n      token._4_4_ = in_stack_ffffff48;\n      token.opr.sbcset = in_stack_ffffff44.sbcset;\n      IVar21 = re_dfa_add_node(local_b0,token);\n      pbVar43->node_idx = IVar21;\n      if (IVar21 == -1) goto LAB_00028330;\n      if ((pbVar43->token).field_0x4 != '\f') goto LAB_000281c7;\n      *(re_context_type *)&local_b0->nodes[IVar21].field_0x4 =\n           *(uint *)&local_b0->nodes[IVar21].field_0x4 & 0xfffc00ff |\n           ((pbVar43->token).opr.ctx_type & 0x3ff) << 8;\n      pbVar22 = pbVar43->parent;\n    }" if (parenthesized_expression "((pbVar43->token).field_0x4 == '\x10')" ( (binary_expression "(pbVar43->token).field_0x4 == '\x10'" (field_expression "(pbVar43->token).field_0x4" (parenthesized_expression "(pbVar43->token)" ( (field_expression "pbVar43->token" identifier -> field_identifier) )) . field_identifier) == (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n      IVar21 = pbVar43->left->node_idx;\n      pbVar43->first = pbVar43->left->first;\n      pbVar43->node_idx = IVar21;\nLAB_000281c7:\n      pbVar22 = pbVar43->parent;\n    }" { (expression_statement "IVar21 = pbVar43->left->node_idx;" (assignment_expression "IVar21 = pbVar43->left->node_idx" identifier = (field_expression "pbVar43->left->node_idx" (field_expression "pbVar43->left" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pbVar43->first = pbVar43->left->first;" (assignment_expression "pbVar43->first = pbVar43->left->first" (field_expression "pbVar43->first" identifier -> field_identifier) = (field_expression "pbVar43->left->first" (field_expression "pbVar43->left" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pbVar43->node_idx = IVar21;" (assignment_expression "pbVar43->node_idx = IVar21" (field_expression "pbVar43->node_idx" identifier -> field_identifier) = identifier) ;) (labeled_statement "LAB_000281c7:\n      pbVar22 = pbVar43->parent;" statement_identifier : (expression_statement "pbVar22 = pbVar43->parent;" (assignment_expression "pbVar22 = pbVar43->parent" identifier = (field_expression "pbVar43->parent" identifier -> field_identifier)) ;)) }) (else_clause "else {\n      pbVar43->first = pbVar43;\n      token._4_4_ = in_stack_ffffff48;\n      token.opr.sbcset = in_stack_ffffff44.sbcset;\n      IVar21 = re_dfa_add_node(local_b0,token);\n      pbVar43->node_idx = IVar21;\n      if (IVar21 == -1) goto LAB_00028330;\n      if ((pbVar43->token).field_0x4 != '\f') goto LAB_000281c7;\n      *(re_context_type *)&local_b0->nodes[IVar21].field_0x4 =\n           *(uint *)&local_b0->nodes[IVar21].field_0x4 & 0xfffc00ff |\n           ((pbVar43->token).opr.ctx_type & 0x3ff) << 8;\n      pbVar22 = pbVar43->parent;\n    }" else (compound_statement "{\n      pbVar43->first = pbVar43;\n      token._4_4_ = in_stack_ffffff48;\n      token.opr.sbcset = in_stack_ffffff44.sbcset;\n      IVar21 = re_dfa_add_node(local_b0,token);\n      pbVar43->node_idx = IVar21;\n      if (IVar21 == -1) goto LAB_00028330;\n      if ((pbVar43->token).field_0x4 != '\f') goto LAB_000281c7;\n      *(re_context_type *)&local_b0->nodes[IVar21].field_0x4 =\n           *(uint *)&local_b0->nodes[IVar21].field_0x4 & 0xfffc00ff |\n           ((pbVar43->token).opr.ctx_type & 0x3ff) << 8;\n      pbVar22 = pbVar43->parent;\n    }" { (expression_statement "pbVar43->first = pbVar43;" (assignment_expression "pbVar43->first = pbVar43" (field_expression "pbVar43->first" identifier -> field_identifier) = identifier) ;) (expression_statement "token._4_4_ = in_stack_ffffff48;" (assignment_expression "token._4_4_ = in_stack_ffffff48" (field_expression "token._4_4_" identifier . field_identifier) = identifier) ;) (expression_statement "token.opr.sbcset = in_stack_ffffff44.sbcset;" (assignment_expression "token.opr.sbcset = in_stack_ffffff44.sbcset" (field_expression "token.opr.sbcset" (field_expression "token.opr" identifier . field_identifier) . field_identifier) = (field_expression "in_stack_ffffff44.sbcset" identifier . field_identifier)) ;) (expression_statement "IVar21 = re_dfa_add_node(local_b0,token);" (assignment_expression "IVar21 = re_dfa_add_node(local_b0,token)" identifier = (call_expression "re_dfa_add_node(local_b0,token)" identifier (argument_list "(local_b0,token)" ( identifier , identifier )))) ;) (expression_statement "pbVar43->node_idx = IVar21;" (assignment_expression "pbVar43->node_idx = IVar21" (field_expression "pbVar43->node_idx" identifier -> field_identifier) = identifier) ;) (if_statement "if (IVar21 == -1) goto LAB_00028330;" if (parenthesized_expression "(IVar21 == -1)" ( (binary_expression "IVar21 == -1" identifier == number_literal) )) (goto_statement "goto LAB_00028330;" goto statement_identifier ;)) (if_statement "if ((pbVar43->token).field_0x4 != '\f') goto LAB_000281c7;" if (parenthesized_expression "((pbVar43->token).field_0x4 != '\f')" ( (binary_expression "(pbVar43->token).field_0x4 != '\f'" (field_expression "(pbVar43->token).field_0x4" (parenthesized_expression "(pbVar43->token)" ( (field_expression "pbVar43->token" identifier -> field_identifier) )) . field_identifier) != (char_literal "'\f'" ' escape_sequence ')) )) (goto_statement "goto LAB_000281c7;" goto statement_identifier ;)) (expression_statement "*(re_context_type *)&local_b0->nodes[IVar21].field_0x4 =\n           *(uint *)&local_b0->nodes[IVar21].field_0x4 & 0xfffc00ff |\n           ((pbVar43->token).opr.ctx_type & 0x3ff) << 8;" (assignment_expression "*(re_context_type *)&local_b0->nodes[IVar21].field_0x4 =\n           *(uint *)&local_b0->nodes[IVar21].field_0x4 & 0xfffc00ff |\n           ((pbVar43->token).opr.ctx_type & 0x3ff) << 8" (pointer_expression "*(re_context_type *)&local_b0->nodes[IVar21].field_0x4" * (cast_expression "(re_context_type *)&local_b0->nodes[IVar21].field_0x4" ( (type_descriptor "re_context_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_b0->nodes[IVar21].field_0x4" & (field_expression "local_b0->nodes[IVar21].field_0x4" (subscript_expression "local_b0->nodes[IVar21]" (field_expression "local_b0->nodes" identifier -> field_identifier) [ identifier ]) . field_identifier)))) = (binary_expression "*(uint *)&local_b0->nodes[IVar21].field_0x4 & 0xfffc00ff |\n           ((pbVar43->token).opr.ctx_type & 0x3ff) << 8" (binary_expression "*(uint *)&local_b0->nodes[IVar21].field_0x4 & 0xfffc00ff" (pointer_expression "*(uint *)&local_b0->nodes[IVar21].field_0x4" * (cast_expression "(uint *)&local_b0->nodes[IVar21].field_0x4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_b0->nodes[IVar21].field_0x4" & (field_expression "local_b0->nodes[IVar21].field_0x4" (subscript_expression "local_b0->nodes[IVar21]" (field_expression "local_b0->nodes" identifier -> field_identifier) [ identifier ]) . field_identifier)))) & number_literal) | (binary_expression "((pbVar43->token).opr.ctx_type & 0x3ff) << 8" (parenthesized_expression "((pbVar43->token).opr.ctx_type & 0x3ff)" ( (binary_expression "(pbVar43->token).opr.ctx_type & 0x3ff" (field_expression "(pbVar43->token).opr.ctx_type" (field_expression "(pbVar43->token).opr" (parenthesized_expression "(pbVar43->token)" ( (field_expression "pbVar43->token" identifier -> field_identifier) )) . field_identifier) . field_identifier) & number_literal) )) << number_literal))) ;) (expression_statement "pbVar22 = pbVar43->parent;" (assignment_expression "pbVar22 = pbVar43->parent" identifier = (field_expression "pbVar43->parent" identifier -> field_identifier)) ;) }))) (if_statement "if (pbVar22 == (bin_tree_t *)0x0) {\n      pbVar16 = local_b0->str_tree;\n      cVar27 = (pbVar16->token).field_0x4;\n      pbVar43 = pbVar16->left;\n      pbVar22 = pbVar16;\n      if (cVar27 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }" if (parenthesized_expression "(pbVar22 == (bin_tree_t *)0x0)" ( (binary_expression "pbVar22 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pbVar16 = local_b0->str_tree;\n      cVar27 = (pbVar16->token).field_0x4;\n      pbVar43 = pbVar16->left;\n      pbVar22 = pbVar16;\n      if (cVar27 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }" { (expression_statement "pbVar16 = local_b0->str_tree;" (assignment_expression "pbVar16 = local_b0->str_tree" identifier = (field_expression "local_b0->str_tree" identifier -> field_identifier)) ;) (expression_statement "cVar27 = (pbVar16->token).field_0x4;" (assignment_expression "cVar27 = (pbVar16->token).field_0x4" identifier = (field_expression "(pbVar16->token).field_0x4" (parenthesized_expression "(pbVar16->token)" ( (field_expression "pbVar16->token" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pbVar43 = pbVar16->left;" (assignment_expression "pbVar43 = pbVar16->left" identifier = (field_expression "pbVar16->left" identifier -> field_identifier)) ;) (expression_statement "pbVar22 = pbVar16;" (assignment_expression "pbVar22 = pbVar16" identifier = identifier) ;) (if_statement "if (cVar27 == '\v') goto LAB_00028283;" if (parenthesized_expression "(cVar27 == '\v')" ( (binary_expression "cVar27 == '\v'" identifier == (char_literal "'\v'" ' escape_sequence ')) )) (goto_statement "goto LAB_00028283;" goto statement_identifier ;)) (goto_statement "goto LAB_00028250;" goto statement_identifier ;) })) (expression_statement "pbVar16 = pbVar22->right;" (assignment_expression "pbVar16 = pbVar22->right" identifier = (field_expression "pbVar22->right" identifier -> field_identifier)) ;) (expression_statement "bVar47 = pbVar43 == pbVar16;" (assignment_expression "bVar47 = pbVar43 == pbVar16" identifier = (binary_expression "pbVar43 == pbVar16" identifier == identifier)) ;) (expression_statement "pbVar43 = pbVar22;" (assignment_expression "pbVar43 = pbVar22" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar16 == (bin_tree_t *)0x0 || bVar47)" ( (binary_expression "pbVar16 == (bin_tree_t *)0x0 || bVar47" (binary_expression "pbVar16 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || identifier) )) ;) (goto_statement "goto LAB_000281a0;" goto statement_identifier ;) (labeled_statement "LAB_00028250:\n  if (cVar27 == '\x10') {\n    pbVar34 = pbVar22->right;\n    pbVar43->next = pbVar34->first;\n    pbVar34->next = pbVar22->next;\n  }\n  else {\n    if (pbVar43 != (bin_tree_t *)0x0) {\n      pbVar43->next = pbVar22->next;\n    }\n    pbVar34 = pbVar22->right;\n    if (pbVar34 == (bin_tree_t *)0x0) {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar22->parent;\n        while( true ) {\n          pbVar34 = pbVar43;\n          if (pbVar34 == (bin_tree_t *)0x0) goto LAB_00028398;\n          pbVar43 = pbVar34->right;\n          if ((pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22)) break;\n          pbVar43 = pbVar34->parent;\n          pbVar22 = pbVar34;\n        }\n      }\n    }\n    else {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar34;\n      }\n      pbVar34->next = pbVar22->next;\n    }\n  }" statement_identifier : (if_statement "if (cVar27 == '\x10') {\n    pbVar34 = pbVar22->right;\n    pbVar43->next = pbVar34->first;\n    pbVar34->next = pbVar22->next;\n  }\n  else {\n    if (pbVar43 != (bin_tree_t *)0x0) {\n      pbVar43->next = pbVar22->next;\n    }\n    pbVar34 = pbVar22->right;\n    if (pbVar34 == (bin_tree_t *)0x0) {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar22->parent;\n        while( true ) {\n          pbVar34 = pbVar43;\n          if (pbVar34 == (bin_tree_t *)0x0) goto LAB_00028398;\n          pbVar43 = pbVar34->right;\n          if ((pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22)) break;\n          pbVar43 = pbVar34->parent;\n          pbVar22 = pbVar34;\n        }\n      }\n    }\n    else {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar34;\n      }\n      pbVar34->next = pbVar22->next;\n    }\n  }" if (parenthesized_expression "(cVar27 == '\x10')" ( (binary_expression "cVar27 == '\x10'" identifier == (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n    pbVar34 = pbVar22->right;\n    pbVar43->next = pbVar34->first;\n    pbVar34->next = pbVar22->next;\n  }" { (expression_statement "pbVar34 = pbVar22->right;" (assignment_expression "pbVar34 = pbVar22->right" identifier = (field_expression "pbVar22->right" identifier -> field_identifier)) ;) (expression_statement "pbVar43->next = pbVar34->first;" (assignment_expression "pbVar43->next = pbVar34->first" (field_expression "pbVar43->next" identifier -> field_identifier) = (field_expression "pbVar34->first" identifier -> field_identifier)) ;) (expression_statement "pbVar34->next = pbVar22->next;" (assignment_expression "pbVar34->next = pbVar22->next" (field_expression "pbVar34->next" identifier -> field_identifier) = (field_expression "pbVar22->next" identifier -> field_identifier)) ;) }) (else_clause "else {\n    if (pbVar43 != (bin_tree_t *)0x0) {\n      pbVar43->next = pbVar22->next;\n    }\n    pbVar34 = pbVar22->right;\n    if (pbVar34 == (bin_tree_t *)0x0) {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar22->parent;\n        while( true ) {\n          pbVar34 = pbVar43;\n          if (pbVar34 == (bin_tree_t *)0x0) goto LAB_00028398;\n          pbVar43 = pbVar34->right;\n          if ((pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22)) break;\n          pbVar43 = pbVar34->parent;\n          pbVar22 = pbVar34;\n        }\n      }\n    }\n    else {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar34;\n      }\n      pbVar34->next = pbVar22->next;\n    }\n  }" else (compound_statement "{\n    if (pbVar43 != (bin_tree_t *)0x0) {\n      pbVar43->next = pbVar22->next;\n    }\n    pbVar34 = pbVar22->right;\n    if (pbVar34 == (bin_tree_t *)0x0) {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar22->parent;\n        while( true ) {\n          pbVar34 = pbVar43;\n          if (pbVar34 == (bin_tree_t *)0x0) goto LAB_00028398;\n          pbVar43 = pbVar34->right;\n          if ((pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22)) break;\n          pbVar43 = pbVar34->parent;\n          pbVar22 = pbVar34;\n        }\n      }\n    }\n    else {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar34;\n      }\n      pbVar34->next = pbVar22->next;\n    }\n  }" { (if_statement "if (pbVar43 != (bin_tree_t *)0x0) {\n      pbVar43->next = pbVar22->next;\n    }" if (parenthesized_expression "(pbVar43 != (bin_tree_t *)0x0)" ( (binary_expression "pbVar43 != (bin_tree_t *)0x0" identifier != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pbVar43->next = pbVar22->next;\n    }" { (expression_statement "pbVar43->next = pbVar22->next;" (assignment_expression "pbVar43->next = pbVar22->next" (field_expression "pbVar43->next" identifier -> field_identifier) = (field_expression "pbVar22->next" identifier -> field_identifier)) ;) })) (expression_statement "pbVar34 = pbVar22->right;" (assignment_expression "pbVar34 = pbVar22->right" identifier = (field_expression "pbVar22->right" identifier -> field_identifier)) ;) (if_statement "if (pbVar34 == (bin_tree_t *)0x0) {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar22->parent;\n        while( true ) {\n          pbVar34 = pbVar43;\n          if (pbVar34 == (bin_tree_t *)0x0) goto LAB_00028398;\n          pbVar43 = pbVar34->right;\n          if ((pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22)) break;\n          pbVar43 = pbVar34->parent;\n          pbVar22 = pbVar34;\n        }\n      }\n    }\n    else {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar34;\n      }\n      pbVar34->next = pbVar22->next;\n    }" if (parenthesized_expression "(pbVar34 == (bin_tree_t *)0x0)" ( (binary_expression "pbVar34 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar22->parent;\n        while( true ) {\n          pbVar34 = pbVar43;\n          if (pbVar34 == (bin_tree_t *)0x0) goto LAB_00028398;\n          pbVar43 = pbVar34->right;\n          if ((pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22)) break;\n          pbVar43 = pbVar34->parent;\n          pbVar22 = pbVar34;\n        }\n      }\n    }" { (if_statement "if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar22->parent;\n        while( true ) {\n          pbVar34 = pbVar43;\n          if (pbVar34 == (bin_tree_t *)0x0) goto LAB_00028398;\n          pbVar43 = pbVar34->right;\n          if ((pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22)) break;\n          pbVar43 = pbVar34->parent;\n          pbVar22 = pbVar34;\n        }\n      }" if (parenthesized_expression "(pbVar43 == (bin_tree_t *)0x0)" ( (binary_expression "pbVar43 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pbVar43 = pbVar22->parent;\n        while( true ) {\n          pbVar34 = pbVar43;\n          if (pbVar34 == (bin_tree_t *)0x0) goto LAB_00028398;\n          pbVar43 = pbVar34->right;\n          if ((pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22)) break;\n          pbVar43 = pbVar34->parent;\n          pbVar22 = pbVar34;\n        }\n      }" { (expression_statement "pbVar43 = pbVar22->parent;" (assignment_expression "pbVar43 = pbVar22->parent" identifier = (field_expression "pbVar22->parent" identifier -> field_identifier)) ;) (while_statement "while( true ) {\n          pbVar34 = pbVar43;\n          if (pbVar34 == (bin_tree_t *)0x0) goto LAB_00028398;\n          pbVar43 = pbVar34->right;\n          if ((pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22)) break;\n          pbVar43 = pbVar34->parent;\n          pbVar22 = pbVar34;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          pbVar34 = pbVar43;\n          if (pbVar34 == (bin_tree_t *)0x0) goto LAB_00028398;\n          pbVar43 = pbVar34->right;\n          if ((pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22)) break;\n          pbVar43 = pbVar34->parent;\n          pbVar22 = pbVar34;\n        }" { (expression_statement "pbVar34 = pbVar43;" (assignment_expression "pbVar34 = pbVar43" identifier = identifier) ;) (if_statement "if (pbVar34 == (bin_tree_t *)0x0) goto LAB_00028398;" if (parenthesized_expression "(pbVar34 == (bin_tree_t *)0x0)" ( (binary_expression "pbVar34 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00028398;" goto statement_identifier ;)) (expression_statement "pbVar43 = pbVar34->right;" (assignment_expression "pbVar43 = pbVar34->right" identifier = (field_expression "pbVar34->right" identifier -> field_identifier)) ;) (if_statement "if ((pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22)) break;" if (parenthesized_expression "((pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22))" ( (binary_expression "(pbVar43 != (bin_tree_t *)0x0) && (pbVar43 != pbVar22)" (parenthesized_expression "(pbVar43 != (bin_tree_t *)0x0)" ( (binary_expression "pbVar43 != (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 "(pbVar43 != pbVar22)" ( (binary_expression "pbVar43 != pbVar22" identifier != identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "pbVar43 = pbVar34->parent;" (assignment_expression "pbVar43 = pbVar34->parent" identifier = (field_expression "pbVar34->parent" identifier -> field_identifier)) ;) (expression_statement "pbVar22 = pbVar34;" (assignment_expression "pbVar22 = pbVar34" identifier = identifier) ;) })) })) }) (else_clause "else {\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar34;\n      }\n      pbVar34->next = pbVar22->next;\n    }" else (compound_statement "{\n      if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar34;\n      }\n      pbVar34->next = pbVar22->next;\n    }" { (if_statement "if (pbVar43 == (bin_tree_t *)0x0) {\n        pbVar43 = pbVar34;\n      }" if (parenthesized_expression "(pbVar43 == (bin_tree_t *)0x0)" ( (binary_expression "pbVar43 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pbVar43 = pbVar34;\n      }" { (expression_statement "pbVar43 = pbVar34;" (assignment_expression "pbVar43 = pbVar34" identifier = identifier) ;) })) (expression_statement "pbVar34->next = pbVar22->next;" (assignment_expression "pbVar34->next = pbVar22->next" (field_expression "pbVar34->next" identifier -> field_identifier) = (field_expression "pbVar22->next" identifier -> field_identifier)) ;) }))) })))) (while_statement "while( true ) {\n    cVar27 = (pbVar43->token).field_0x4;\n    ppbVar8 = &pbVar43->left;\n    pbVar22 = pbVar43;\n    pbVar43 = *ppbVar8;\n    if (cVar27 != '\v') break;\nLAB_00028283:\n    pbVar43->next = pbVar22;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    cVar27 = (pbVar43->token).field_0x4;\n    ppbVar8 = &pbVar43->left;\n    pbVar22 = pbVar43;\n    pbVar43 = *ppbVar8;\n    if (cVar27 != '\v') break;\nLAB_00028283:\n    pbVar43->next = pbVar22;\n  }" { (expression_statement "cVar27 = (pbVar43->token).field_0x4;" (assignment_expression "cVar27 = (pbVar43->token).field_0x4" identifier = (field_expression "(pbVar43->token).field_0x4" (parenthesized_expression "(pbVar43->token)" ( (field_expression "pbVar43->token" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "ppbVar8 = &pbVar43->left;" (assignment_expression "ppbVar8 = &pbVar43->left" identifier = (pointer_expression "&pbVar43->left" & (field_expression "pbVar43->left" identifier -> field_identifier))) ;) (expression_statement "pbVar22 = pbVar43;" (assignment_expression "pbVar22 = pbVar43" identifier = identifier) ;) (expression_statement "pbVar43 = *ppbVar8;" (assignment_expression "pbVar43 = *ppbVar8" identifier = (pointer_expression "*ppbVar8" * identifier)) ;) (if_statement "if (cVar27 != '\v') break;" if (parenthesized_expression "(cVar27 != '\v')" ( (binary_expression "cVar27 != '\v'" identifier != (char_literal "'\v'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00028283:\n    pbVar43->next = pbVar22;" statement_identifier : (expression_statement "pbVar43->next = pbVar22;" (assignment_expression "pbVar43->next = pbVar22" (field_expression "pbVar43->next" identifier -> field_identifier) = identifier) ;)) })) (goto_statement "goto LAB_00028250;" goto statement_identifier ;) (while_statement "while (pbVar22 = pbVar34->parent, pbVar43 = pbVar34, pbVar34->parent != (bin_tree_t *)0x0) {\n    while( true ) {\n      pbVar34 = pbVar22;\n      pbVar16 = pbVar34->right;\n      bVar47 = pbVar16 == pbVar43;\n      if (bVar47 || pbVar16 == (bin_tree_t *)0x0) break;\nLAB_00028398:\n      do {\n        bVar49 = (pbVar16->token).field_0x4;\n        if (bVar49 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))\n                             ();\n          return rVar15;\n        }\n        if ((bVar49 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        local_b0->nexts[pbVar16->node_idx] = pbVar16->next->node_idx;\n        pbVar43 = pbVar16->left;\n        pbVar22 = pbVar16;\n        pbVar16 = pbVar43;\n      } while (pbVar43 != (bin_tree_t *)0x0);\n    }\n  }" while (parenthesized_expression "(pbVar22 = pbVar34->parent, pbVar43 = pbVar34, pbVar34->parent != (bin_tree_t *)0x0)" ( (comma_expression "pbVar22 = pbVar34->parent, pbVar43 = pbVar34, pbVar34->parent != (bin_tree_t *)0x0" (assignment_expression "pbVar22 = pbVar34->parent" identifier = (field_expression "pbVar34->parent" identifier -> field_identifier)) , (comma_expression "pbVar43 = pbVar34, pbVar34->parent != (bin_tree_t *)0x0" (assignment_expression "pbVar43 = pbVar34" identifier = identifier) , (binary_expression "pbVar34->parent != (bin_tree_t *)0x0" (field_expression "pbVar34->parent" identifier -> field_identifier) != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) )) (compound_statement "{\n    while( true ) {\n      pbVar34 = pbVar22;\n      pbVar16 = pbVar34->right;\n      bVar47 = pbVar16 == pbVar43;\n      if (bVar47 || pbVar16 == (bin_tree_t *)0x0) break;\nLAB_00028398:\n      do {\n        bVar49 = (pbVar16->token).field_0x4;\n        if (bVar49 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))\n                             ();\n          return rVar15;\n        }\n        if ((bVar49 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        local_b0->nexts[pbVar16->node_idx] = pbVar16->next->node_idx;\n        pbVar43 = pbVar16->left;\n        pbVar22 = pbVar16;\n        pbVar16 = pbVar43;\n      } while (pbVar43 != (bin_tree_t *)0x0);\n    }\n  }" { (while_statement "while( true ) {\n      pbVar34 = pbVar22;\n      pbVar16 = pbVar34->right;\n      bVar47 = pbVar16 == pbVar43;\n      if (bVar47 || pbVar16 == (bin_tree_t *)0x0) break;\nLAB_00028398:\n      do {\n        bVar49 = (pbVar16->token).field_0x4;\n        if (bVar49 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))\n                             ();\n          return rVar15;\n        }\n        if ((bVar49 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        local_b0->nexts[pbVar16->node_idx] = pbVar16->next->node_idx;\n        pbVar43 = pbVar16->left;\n        pbVar22 = pbVar16;\n        pbVar16 = pbVar43;\n      } while (pbVar43 != (bin_tree_t *)0x0);\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      pbVar34 = pbVar22;\n      pbVar16 = pbVar34->right;\n      bVar47 = pbVar16 == pbVar43;\n      if (bVar47 || pbVar16 == (bin_tree_t *)0x0) break;\nLAB_00028398:\n      do {\n        bVar49 = (pbVar16->token).field_0x4;\n        if (bVar49 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))\n                             ();\n          return rVar15;\n        }\n        if ((bVar49 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        local_b0->nexts[pbVar16->node_idx] = pbVar16->next->node_idx;\n        pbVar43 = pbVar16->left;\n        pbVar22 = pbVar16;\n        pbVar16 = pbVar43;\n      } while (pbVar43 != (bin_tree_t *)0x0);\n    }" { (expression_statement "pbVar34 = pbVar22;" (assignment_expression "pbVar34 = pbVar22" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar34->right;" (assignment_expression "pbVar16 = pbVar34->right" identifier = (field_expression "pbVar34->right" identifier -> field_identifier)) ;) (expression_statement "bVar47 = pbVar16 == pbVar43;" (assignment_expression "bVar47 = pbVar16 == pbVar43" identifier = (binary_expression "pbVar16 == pbVar43" identifier == identifier)) ;) (if_statement "if (bVar47 || pbVar16 == (bin_tree_t *)0x0) break;" if (parenthesized_expression "(bVar47 || pbVar16 == (bin_tree_t *)0x0)" ( (binary_expression "bVar47 || pbVar16 == (bin_tree_t *)0x0" identifier || (binary_expression "pbVar16 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00028398:\n      do {\n        bVar49 = (pbVar16->token).field_0x4;\n        if (bVar49 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))\n                             ();\n          return rVar15;\n        }\n        if ((bVar49 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        local_b0->nexts[pbVar16->node_idx] = pbVar16->next->node_idx;\n        pbVar43 = pbVar16->left;\n        pbVar22 = pbVar16;\n        pbVar16 = pbVar43;\n      } while (pbVar43 != (bin_tree_t *)0x0);" statement_identifier : (do_statement "do {\n        bVar49 = (pbVar16->token).field_0x4;\n        if (bVar49 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))\n                             ();\n          return rVar15;\n        }\n        if ((bVar49 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        local_b0->nexts[pbVar16->node_idx] = pbVar16->next->node_idx;\n        pbVar43 = pbVar16->left;\n        pbVar22 = pbVar16;\n        pbVar16 = pbVar43;\n      } while (pbVar43 != (bin_tree_t *)0x0);" do (compound_statement "{\n        bVar49 = (pbVar16->token).field_0x4;\n        if (bVar49 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))\n                             ();\n          return rVar15;\n        }\n        if ((bVar49 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        local_b0->nexts[pbVar16->node_idx] = pbVar16->next->node_idx;\n        pbVar43 = pbVar16->left;\n        pbVar22 = pbVar16;\n        pbVar16 = pbVar43;\n      }" { (expression_statement "bVar49 = (pbVar16->token).field_0x4;" (assignment_expression "bVar49 = (pbVar16->token).field_0x4" identifier = (field_expression "(pbVar16->token).field_0x4" (parenthesized_expression "(pbVar16->token)" ( (field_expression "pbVar16->token" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (bVar49 < 0x11) {\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))\n                             ();\n          return rVar15;\n        }" if (parenthesized_expression "(bVar49 < 0x11)" ( (binary_expression "bVar49 < 0x11" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))\n                             ();\n          return rVar15;\n        }" { comment comment (expression_statement "rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))\n                             ();" (assignment_expression "rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))\n                             ()" identifier = (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))\n                             ()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669))" ( (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669)" * (cast_expression "(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669)" ( (binary_expression "*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI + 0xc669" (binary_expression "*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4) + unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x57dd + (uint)bVar49 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x57dd + (uint)bVar49 * 4)" ( (binary_expression "unaff_EDI + 0x57dd + (uint)bVar49 * 4" (binary_expression "unaff_EDI + 0x57dd" identifier + number_literal) + (binary_expression "(uint)bVar49 * 4" (cast_expression "(uint)bVar49" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( )))) ;) (return_statement "return rVar15;" return identifier ;) })) (if_statement "if ((bVar49 & 8) != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }" if (parenthesized_expression "((bVar49 & 8) != 0)" ( (binary_expression "(bVar49 & 8) != 0" (parenthesized_expression "(bVar49 & 8)" ( (binary_expression "bVar49 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }" { comment (expression_statement "__assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));" (call_expression "__assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895))" identifier (argument_list "((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895))" ( (cast_expression "(char *)(unaff_EDI + 0x5ac9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x5ac9)" ( (binary_expression "unaff_EDI + 0x5ac9" identifier + number_literal) ))) , (cast_expression "(char *)(unaff_EDI + 0x503d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x503d)" ( (binary_expression "unaff_EDI + 0x503d" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x5895)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x5895)" ( (binary_expression "unaff_EDI + 0x5895" identifier + number_literal) ))) ))) ;) })) (expression_statement "local_b0->nexts[pbVar16->node_idx] = pbVar16->next->node_idx;" (assignment_expression "local_b0->nexts[pbVar16->node_idx] = pbVar16->next->node_idx" (subscript_expression "local_b0->nexts[pbVar16->node_idx]" (field_expression "local_b0->nexts" identifier -> field_identifier) [ (field_expression "pbVar16->node_idx" identifier -> field_identifier) ]) = (field_expression "pbVar16->next->node_idx" (field_expression "pbVar16->next" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pbVar43 = pbVar16->left;" (assignment_expression "pbVar43 = pbVar16->left" identifier = (field_expression "pbVar16->left" identifier -> field_identifier)) ;) (expression_statement "pbVar22 = pbVar16;" (assignment_expression "pbVar22 = pbVar16" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar43;" (assignment_expression "pbVar16 = pbVar43" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar43 != (bin_tree_t *)0x0)" ( (binary_expression "pbVar43 != (bin_tree_t *)0x0" identifier != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) })) })) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) (expression_statement "sVar39 = 0;" (assignment_expression "sVar39 = 0" identifier = number_literal) ;) (do_statement "do {\n    sVar33 = sVar39;\n    if (local_b0->nodes_len == sVar39) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      if (local_b0->eclosures[sVar33].nelem != 0) goto code_r0x000284f2;\n      aVar14.idx = calc_eclosure_iter((re_node_set *)&current_token,local_b0,sVar33,true);\n      if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n      sVar39 = sVar33 + 1;\n      if (local_b0->eclosures[sVar33].nelem != 0) break;\n      free(local_78);\n      sVar33 = sVar39;\n      bVar48 = bVar47 || pbVar16 == (bin_tree_t *)0x0;\n      if (local_b0->nodes_len == sVar39) goto LAB_00028505;\n    }\n  } while( true );" do (compound_statement "{\n    sVar33 = sVar39;\n    if (local_b0->nodes_len == sVar39) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      if (local_b0->eclosures[sVar33].nelem != 0) goto code_r0x000284f2;\n      aVar14.idx = calc_eclosure_iter((re_node_set *)&current_token,local_b0,sVar33,true);\n      if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n      sVar39 = sVar33 + 1;\n      if (local_b0->eclosures[sVar33].nelem != 0) break;\n      free(local_78);\n      sVar33 = sVar39;\n      bVar48 = bVar47 || pbVar16 == (bin_tree_t *)0x0;\n      if (local_b0->nodes_len == sVar39) goto LAB_00028505;\n    }\n  }" { (expression_statement "sVar33 = sVar39;" (assignment_expression "sVar33 = sVar39" identifier = identifier) ;) (if_statement "if (local_b0->nodes_len == sVar39) goto LAB_000284fa;" if (parenthesized_expression "(local_b0->nodes_len == sVar39)" ( (binary_expression "local_b0->nodes_len == sVar39" (field_expression "local_b0->nodes_len" identifier -> field_identifier) == identifier) )) (goto_statement "goto LAB_000284fa;" goto statement_identifier ;)) (labeled_statement "LAB_000284dd:\n    while( true ) {\n      if (local_b0->eclosures[sVar33].nelem != 0) goto code_r0x000284f2;\n      aVar14.idx = calc_eclosure_iter((re_node_set *)&current_token,local_b0,sVar33,true);\n      if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n      sVar39 = sVar33 + 1;\n      if (local_b0->eclosures[sVar33].nelem != 0) break;\n      free(local_78);\n      sVar33 = sVar39;\n      bVar48 = bVar47 || pbVar16 == (bin_tree_t *)0x0;\n      if (local_b0->nodes_len == sVar39) goto LAB_00028505;\n    }" statement_identifier : (while_statement "while( true ) {\n      if (local_b0->eclosures[sVar33].nelem != 0) goto code_r0x000284f2;\n      aVar14.idx = calc_eclosure_iter((re_node_set *)&current_token,local_b0,sVar33,true);\n      if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n      sVar39 = sVar33 + 1;\n      if (local_b0->eclosures[sVar33].nelem != 0) break;\n      free(local_78);\n      sVar33 = sVar39;\n      bVar48 = bVar47 || pbVar16 == (bin_tree_t *)0x0;\n      if (local_b0->nodes_len == sVar39) goto LAB_00028505;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (local_b0->eclosures[sVar33].nelem != 0) goto code_r0x000284f2;\n      aVar14.idx = calc_eclosure_iter((re_node_set *)&current_token,local_b0,sVar33,true);\n      if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;\n      sVar39 = sVar33 + 1;\n      if (local_b0->eclosures[sVar33].nelem != 0) break;\n      free(local_78);\n      sVar33 = sVar39;\n      bVar48 = bVar47 || pbVar16 == (bin_tree_t *)0x0;\n      if (local_b0->nodes_len == sVar39) goto LAB_00028505;\n    }" { (if_statement "if (local_b0->eclosures[sVar33].nelem != 0) goto code_r0x000284f2;" if (parenthesized_expression "(local_b0->eclosures[sVar33].nelem != 0)" ( (binary_expression "local_b0->eclosures[sVar33].nelem != 0" (field_expression "local_b0->eclosures[sVar33].nelem" (subscript_expression "local_b0->eclosures[sVar33]" (field_expression "local_b0->eclosures" identifier -> field_identifier) [ identifier ]) . field_identifier) != number_literal) )) (goto_statement "goto code_r0x000284f2;" goto statement_identifier ;)) (expression_statement "aVar14.idx = calc_eclosure_iter((re_node_set *)&current_token,local_b0,sVar33,true);" (assignment_expression "aVar14.idx = calc_eclosure_iter((re_node_set *)&current_token,local_b0,sVar33,true)" (field_expression "aVar14.idx" identifier . field_identifier) = (call_expression "calc_eclosure_iter((re_node_set *)&current_token,local_b0,sVar33,true)" identifier (argument_list "((re_node_set *)&current_token,local_b0,sVar33,true)" ( (cast_expression "(re_node_set *)&current_token" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&current_token" & identifier)) , identifier , identifier , true )))) ;) (if_statement "if (aVar14.sbcset != (re_bitset_ptr_t)0x0) goto LAB_00028335;" if (parenthesized_expression "(aVar14.sbcset != (re_bitset_ptr_t)0x0)" ( (binary_expression "aVar14.sbcset != (re_bitset_ptr_t)0x0" (field_expression "aVar14.sbcset" identifier . field_identifier) != (cast_expression "(re_bitset_ptr_t)0x0" ( (type_descriptor "re_bitset_ptr_t" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00028335;" goto statement_identifier ;)) (expression_statement "sVar39 = sVar33 + 1;" (assignment_expression "sVar39 = sVar33 + 1" identifier = (binary_expression "sVar33 + 1" identifier + number_literal)) ;) (if_statement "if (local_b0->eclosures[sVar33].nelem != 0) break;" if (parenthesized_expression "(local_b0->eclosures[sVar33].nelem != 0)" ( (binary_expression "local_b0->eclosures[sVar33].nelem != 0" (field_expression "local_b0->eclosures[sVar33].nelem" (subscript_expression "local_b0->eclosures[sVar33]" (field_expression "local_b0->eclosures" identifier -> field_identifier) [ identifier ]) . field_identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "free(local_78);" (call_expression "free(local_78)" identifier (argument_list "(local_78)" ( identifier ))) ;) (expression_statement "sVar33 = sVar39;" (assignment_expression "sVar33 = sVar39" identifier = identifier) ;) (expression_statement "bVar48 = bVar47 || pbVar16 == (bin_tree_t *)0x0;" (assignment_expression "bVar48 = bVar47 || pbVar16 == (bin_tree_t *)0x0" identifier = (binary_expression "bVar47 || pbVar16 == (bin_tree_t *)0x0" identifier || (binary_expression "pbVar16 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ;) (if_statement "if (local_b0->nodes_len == sVar39) goto LAB_00028505;" if (parenthesized_expression "(local_b0->nodes_len == sVar39)" ( (binary_expression "local_b0->nodes_len == sVar39" (field_expression "local_b0->nodes_len" identifier -> field_identifier) == identifier) )) (goto_statement "goto LAB_00028505;" goto statement_identifier ;)) }))) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "code_r0x000284f2:\n  sVar39 = sVar33 + 1;" statement_identifier : (expression_statement "sVar39 = sVar33 + 1;" (assignment_expression "sVar39 = sVar33 + 1" identifier = (binary_expression "sVar33 + 1" identifier + number_literal)) ;)) (expression_statement "sVar33 = sVar39;" (assignment_expression "sVar33 = sVar39" identifier = identifier) ;) (if_statement "if (local_b0->nodes_len == sVar39) {\nLAB_000284fa:\n    if (!bVar48) {\n      if (((((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0)) ||\n          ((local_b0->field_0x58 & 1) == 0)) && (local_b0->nbackref == 0)) goto LAB_00028860;\n      prVar19 = (re_node_set *)malloc(sVar39 * 0xc);\n      local_b0->inveclosures = prVar19;\n      if (prVar19 != (re_node_set *)0x0) {\n        uVar40 = 0;\n        if (sVar39 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      err = _REG_ESPACE;\n      local_b0 = preg_00->buffer;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    sVar33 = 0;\n    bVar48 = false;\n  }" if (parenthesized_expression "(local_b0->nodes_len == sVar39)" ( (binary_expression "local_b0->nodes_len == sVar39" (field_expression "local_b0->nodes_len" identifier -> field_identifier) == identifier) )) (compound_statement "{\nLAB_000284fa:\n    if (!bVar48) {\n      if (((((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0)) ||\n          ((local_b0->field_0x58 & 1) == 0)) && (local_b0->nbackref == 0)) goto LAB_00028860;\n      prVar19 = (re_node_set *)malloc(sVar39 * 0xc);\n      local_b0->inveclosures = prVar19;\n      if (prVar19 != (re_node_set *)0x0) {\n        uVar40 = 0;\n        if (sVar39 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      err = _REG_ESPACE;\n      local_b0 = preg_00->buffer;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    sVar33 = 0;\n    bVar48 = false;\n  }" { (labeled_statement "LAB_000284fa:\n    if (!bVar48) {\n      if (((((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0)) ||\n          ((local_b0->field_0x58 & 1) == 0)) && (local_b0->nbackref == 0)) goto LAB_00028860;\n      prVar19 = (re_node_set *)malloc(sVar39 * 0xc);\n      local_b0->inveclosures = prVar19;\n      if (prVar19 != (re_node_set *)0x0) {\n        uVar40 = 0;\n        if (sVar39 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      err = _REG_ESPACE;\n      local_b0 = preg_00->buffer;\n      goto LAB_00027c60;\n    }" statement_identifier : (if_statement "if (!bVar48) {\n      if (((((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0)) ||\n          ((local_b0->field_0x58 & 1) == 0)) && (local_b0->nbackref == 0)) goto LAB_00028860;\n      prVar19 = (re_node_set *)malloc(sVar39 * 0xc);\n      local_b0->inveclosures = prVar19;\n      if (prVar19 != (re_node_set *)0x0) {\n        uVar40 = 0;\n        if (sVar39 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      err = _REG_ESPACE;\n      local_b0 = preg_00->buffer;\n      goto LAB_00027c60;\n    }" if (parenthesized_expression "(!bVar48)" ( (unary_expression "!bVar48" ! identifier) )) (compound_statement "{\n      if (((((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0)) ||\n          ((local_b0->field_0x58 & 1) == 0)) && (local_b0->nbackref == 0)) goto LAB_00028860;\n      prVar19 = (re_node_set *)malloc(sVar39 * 0xc);\n      local_b0->inveclosures = prVar19;\n      if (prVar19 != (re_node_set *)0x0) {\n        uVar40 = 0;\n        if (sVar39 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      err = _REG_ESPACE;\n      local_b0 = preg_00->buffer;\n      goto LAB_00027c60;\n    }" { (if_statement "if (((((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0)) ||\n          ((local_b0->field_0x58 & 1) == 0)) && (local_b0->nbackref == 0)) goto LAB_00028860;" if (parenthesized_expression "(((((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0)) ||\n          ((local_b0->field_0x58 & 1) == 0)) && (local_b0->nbackref == 0))" ( (binary_expression "((((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0)) ||\n          ((local_b0->field_0x58 & 1) == 0)) && (local_b0->nbackref == 0)" (parenthesized_expression "((((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0)) ||\n          ((local_b0->field_0x58 & 1) == 0))" ( (binary_expression "(((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0)) ||\n          ((local_b0->field_0x58 & 1) == 0)" (parenthesized_expression "(((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0))" ( (binary_expression "((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0)" (parenthesized_expression "((preg_00->field_0x1c & 0x10) != 0)" ( (binary_expression "(preg_00->field_0x1c & 0x10) != 0" (parenthesized_expression "(preg_00->field_0x1c & 0x10)" ( (binary_expression "preg_00->field_0x1c & 0x10" (field_expression "preg_00->field_0x1c" identifier -> field_identifier) & number_literal) )) != number_literal) )) || (parenthesized_expression "(preg_00->re_nsub == 0)" ( (binary_expression "preg_00->re_nsub == 0" (field_expression "preg_00->re_nsub" identifier -> field_identifier) == number_literal) ))) )) || (parenthesized_expression "((local_b0->field_0x58 & 1) == 0)" ( (binary_expression "(local_b0->field_0x58 & 1) == 0" (parenthesized_expression "(local_b0->field_0x58 & 1)" ( (binary_expression "local_b0->field_0x58 & 1" (field_expression "local_b0->field_0x58" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(local_b0->nbackref == 0)" ( (binary_expression "local_b0->nbackref == 0" (field_expression "local_b0->nbackref" identifier -> field_identifier) == number_literal) ))) )) (goto_statement "goto LAB_00028860;" goto statement_identifier ;)) (expression_statement "prVar19 = (re_node_set *)malloc(sVar39 * 0xc);" (assignment_expression "prVar19 = (re_node_set *)malloc(sVar39 * 0xc)" identifier = (cast_expression "(re_node_set *)malloc(sVar39 * 0xc)" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar39 * 0xc)" identifier (argument_list "(sVar39 * 0xc)" ( (binary_expression "sVar39 * 0xc" identifier * number_literal) ))))) ;) (expression_statement "local_b0->inveclosures = prVar19;" (assignment_expression "local_b0->inveclosures = prVar19" (field_expression "local_b0->inveclosures" identifier -> field_identifier) = identifier) ;) (if_statement "if (prVar19 != (re_node_set *)0x0) {\n        uVar40 = 0;\n        if (sVar39 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }" if (parenthesized_expression "(prVar19 != (re_node_set *)0x0)" ( (binary_expression "prVar19 != (re_node_set *)0x0" identifier != (cast_expression "(re_node_set *)0x0" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar40 = 0;\n        if (sVar39 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }" { (expression_statement "uVar40 = 0;" (assignment_expression "uVar40 = 0" identifier = number_literal) ;) (if_statement "if (sVar39 != 0) goto LAB_0002875b;" if (parenthesized_expression "(sVar39 != 0)" ( (binary_expression "sVar39 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002875b;" goto statement_identifier ;)) (goto_statement "goto LAB_00028860;" goto statement_identifier ;) })) (expression_statement "err = _REG_ESPACE;" (assignment_expression "err = _REG_ESPACE" identifier = identifier) ;) (expression_statement "local_b0 = preg_00->buffer;" (assignment_expression "local_b0 = preg_00->buffer" identifier = (field_expression "preg_00->buffer" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00027c60;" goto statement_identifier ;) }))) (labeled_statement "LAB_00028505:\n    sVar33 = 0;" statement_identifier : (expression_statement "sVar33 = 0;" (assignment_expression "sVar33 = 0" identifier = number_literal) ;)) (expression_statement "bVar48 = false;" (assignment_expression "bVar48 = false" identifier = false) ;) })) (goto_statement "goto LAB_000284dd;" goto statement_identifier ;) (labeled_statement "LAB_00028330:\n  aVar14.idx = _REG_ESPACE;" statement_identifier : (expression_statement "aVar14.idx = _REG_ESPACE;" (assignment_expression "aVar14.idx = _REG_ESPACE" (field_expression "aVar14.idx" identifier . field_identifier) = identifier) ;)) (labeled_statement "LAB_00028335:\n  local_b0 = preg_00->buffer;" statement_identifier : (expression_statement "local_b0 = preg_00->buffer;" (assignment_expression "local_b0 = preg_00->buffer" identifier = (field_expression "preg_00->buffer" identifier -> field_identifier)) ;)) (expression_statement "err = (reg_errcode_t)aVar14;" (assignment_expression "err = (reg_errcode_t)aVar14" identifier = (cast_expression "(reg_errcode_t)aVar14" ( (type_descriptor "reg_errcode_t" type_identifier) ) identifier)) ;) (labeled_statement "LAB_00027c60:\n  pbVar26 = local_b0->str_tree_storage;" statement_identifier : (expression_statement "pbVar26 = local_b0->str_tree_storage;" (assignment_expression "pbVar26 = local_b0->str_tree_storage" identifier = (field_expression "local_b0->str_tree_storage" identifier -> field_identifier)) ;)) (while_statement "while (pbVar26 != (bin_tree_storage_t *)0x0) {\n    pbVar6 = pbVar26->next;\n    free(pbVar26);\n    pbVar26 = pbVar6;\n  }" while (parenthesized_expression "(pbVar26 != (bin_tree_storage_t *)0x0)" ( (binary_expression "pbVar26 != (bin_tree_storage_t *)0x0" identifier != (cast_expression "(bin_tree_storage_t *)0x0" ( (type_descriptor "bin_tree_storage_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pbVar6 = pbVar26->next;\n    free(pbVar26);\n    pbVar26 = pbVar6;\n  }" { (expression_statement "pbVar6 = pbVar26->next;" (assignment_expression "pbVar6 = pbVar26->next" identifier = (field_expression "pbVar26->next" identifier -> field_identifier)) ;) (expression_statement "free(pbVar26);" (call_expression "free(pbVar26)" identifier (argument_list "(pbVar26)" ( identifier ))) ;) (expression_statement "pbVar26 = pbVar6;" (assignment_expression "pbVar26 = pbVar6" identifier = identifier) ;) })) (expression_statement "local_b0->str_tree_storage = (bin_tree_storage_t *)0x0;" (assignment_expression "local_b0->str_tree_storage = (bin_tree_storage_t *)0x0" (field_expression "local_b0->str_tree_storage" identifier -> field_identifier) = (cast_expression "(bin_tree_storage_t *)0x0" ( (type_descriptor "bin_tree_storage_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_b0->str_tree_storage_idx = 0x1f;" (assignment_expression "local_b0->str_tree_storage_idx = 0x1f" (field_expression "local_b0->str_tree_storage_idx" identifier -> field_identifier) = number_literal) ;) (expression_statement "local_b0->str_tree = (bin_tree_t *)0x0;" (assignment_expression "local_b0->str_tree = (bin_tree_t *)0x0" (field_expression "local_b0->str_tree" identifier -> field_identifier) = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "free(local_b0->org_indices);" (call_expression "free(local_b0->org_indices)" identifier (argument_list "(local_b0->org_indices)" ( (field_expression "local_b0->org_indices" identifier -> field_identifier) ))) ;) (expression_statement "local_b0->org_indices = (Idx *)0x0;" (assignment_expression "local_b0->org_indices = (Idx *)0x0" (field_expression "local_b0->org_indices" identifier -> field_identifier) = (cast_expression "(Idx *)0x0" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "free(regexp.wcs);" (call_expression "free(regexp.wcs)" identifier (argument_list "(regexp.wcs)" ( (field_expression "regexp.wcs" identifier . field_identifier) ))) ;) (expression_statement "free(regexp.offsets);" (call_expression "free(regexp.offsets)" identifier (argument_list "(regexp.offsets)" ( (field_expression "regexp.offsets" identifier . field_identifier) ))) ;) (if_statement "if (regexp.mbs_allocated != '\0') {\n    free(regexp.mbs);\n  }" if (parenthesized_expression "(regexp.mbs_allocated != '\0')" ( (binary_expression "regexp.mbs_allocated != '\0'" (field_expression "regexp.mbs_allocated" identifier . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    free(regexp.mbs);\n  }" { (expression_statement "free(regexp.mbs);" (call_expression "free(regexp.mbs)" identifier (argument_list "(regexp.mbs)" ( (field_expression "regexp.mbs" identifier . field_identifier) ))) ;) })) (goto_statement "goto LAB_000282d8;" goto statement_identifier ;) (labeled_statement "LAB_0002897d:\n  do {\n    uVar30 = uVar40 + uVar28 >> 1;\n    if (iVar32 <= local_78[uVar30]) {\n      if (uVar30 <= uVar28) break;\n      uVar41 = uVar28 + uVar30 >> 1;\n      iVar31 = local_78[uVar41];\n      uVar40 = uVar30;\n      uVar30 = uVar41;\n      while (iVar32 <= iVar31) {\n        if (uVar30 <= uVar28) goto LAB_000289b4;\n        uVar41 = uVar28 + uVar30 >> 1;\n        uVar40 = uVar30;\n        uVar30 = uVar41;\n        iVar31 = local_78[uVar41];\n      }\n    }\n    uVar28 = uVar30 + 1;\n  } while (uVar28 < uVar40);" statement_identifier : (do_statement "do {\n    uVar30 = uVar40 + uVar28 >> 1;\n    if (iVar32 <= local_78[uVar30]) {\n      if (uVar30 <= uVar28) break;\n      uVar41 = uVar28 + uVar30 >> 1;\n      iVar31 = local_78[uVar41];\n      uVar40 = uVar30;\n      uVar30 = uVar41;\n      while (iVar32 <= iVar31) {\n        if (uVar30 <= uVar28) goto LAB_000289b4;\n        uVar41 = uVar28 + uVar30 >> 1;\n        uVar40 = uVar30;\n        uVar30 = uVar41;\n        iVar31 = local_78[uVar41];\n      }\n    }\n    uVar28 = uVar30 + 1;\n  } while (uVar28 < uVar40);" do (compound_statement "{\n    uVar30 = uVar40 + uVar28 >> 1;\n    if (iVar32 <= local_78[uVar30]) {\n      if (uVar30 <= uVar28) break;\n      uVar41 = uVar28 + uVar30 >> 1;\n      iVar31 = local_78[uVar41];\n      uVar40 = uVar30;\n      uVar30 = uVar41;\n      while (iVar32 <= iVar31) {\n        if (uVar30 <= uVar28) goto LAB_000289b4;\n        uVar41 = uVar28 + uVar30 >> 1;\n        uVar40 = uVar30;\n        uVar30 = uVar41;\n        iVar31 = local_78[uVar41];\n      }\n    }\n    uVar28 = uVar30 + 1;\n  }" { (expression_statement "uVar30 = uVar40 + uVar28 >> 1;" (assignment_expression "uVar30 = uVar40 + uVar28 >> 1" identifier = (binary_expression "uVar40 + uVar28 >> 1" (binary_expression "uVar40 + uVar28" identifier + identifier) >> number_literal)) ;) (if_statement "if (iVar32 <= local_78[uVar30]) {\n      if (uVar30 <= uVar28) break;\n      uVar41 = uVar28 + uVar30 >> 1;\n      iVar31 = local_78[uVar41];\n      uVar40 = uVar30;\n      uVar30 = uVar41;\n      while (iVar32 <= iVar31) {\n        if (uVar30 <= uVar28) goto LAB_000289b4;\n        uVar41 = uVar28 + uVar30 >> 1;\n        uVar40 = uVar30;\n        uVar30 = uVar41;\n        iVar31 = local_78[uVar41];\n      }\n    }" if (parenthesized_expression "(iVar32 <= local_78[uVar30])" ( (binary_expression "iVar32 <= local_78[uVar30]" identifier <= (subscript_expression "local_78[uVar30]" identifier [ identifier ])) )) (compound_statement "{\n      if (uVar30 <= uVar28) break;\n      uVar41 = uVar28 + uVar30 >> 1;\n      iVar31 = local_78[uVar41];\n      uVar40 = uVar30;\n      uVar30 = uVar41;\n      while (iVar32 <= iVar31) {\n        if (uVar30 <= uVar28) goto LAB_000289b4;\n        uVar41 = uVar28 + uVar30 >> 1;\n        uVar40 = uVar30;\n        uVar30 = uVar41;\n        iVar31 = local_78[uVar41];\n      }\n    }" { (if_statement "if (uVar30 <= uVar28) break;" if (parenthesized_expression "(uVar30 <= uVar28)" ( (binary_expression "uVar30 <= uVar28" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar41 = uVar28 + uVar30 >> 1;" (assignment_expression "uVar41 = uVar28 + uVar30 >> 1" identifier = (binary_expression "uVar28 + uVar30 >> 1" (binary_expression "uVar28 + uVar30" identifier + identifier) >> number_literal)) ;) (expression_statement "iVar31 = local_78[uVar41];" (assignment_expression "iVar31 = local_78[uVar41]" identifier = (subscript_expression "local_78[uVar41]" identifier [ identifier ])) ;) (expression_statement "uVar40 = uVar30;" (assignment_expression "uVar40 = uVar30" identifier = identifier) ;) (expression_statement "uVar30 = uVar41;" (assignment_expression "uVar30 = uVar41" identifier = identifier) ;) (while_statement "while (iVar32 <= iVar31) {\n        if (uVar30 <= uVar28) goto LAB_000289b4;\n        uVar41 = uVar28 + uVar30 >> 1;\n        uVar40 = uVar30;\n        uVar30 = uVar41;\n        iVar31 = local_78[uVar41];\n      }" while (parenthesized_expression "(iVar32 <= iVar31)" ( (binary_expression "iVar32 <= iVar31" identifier <= identifier) )) (compound_statement "{\n        if (uVar30 <= uVar28) goto LAB_000289b4;\n        uVar41 = uVar28 + uVar30 >> 1;\n        uVar40 = uVar30;\n        uVar30 = uVar41;\n        iVar31 = local_78[uVar41];\n      }" { (if_statement "if (uVar30 <= uVar28) goto LAB_000289b4;" if (parenthesized_expression "(uVar30 <= uVar28)" ( (binary_expression "uVar30 <= uVar28" identifier <= identifier) )) (goto_statement "goto LAB_000289b4;" goto statement_identifier ;)) (expression_statement "uVar41 = uVar28 + uVar30 >> 1;" (assignment_expression "uVar41 = uVar28 + uVar30 >> 1" identifier = (binary_expression "uVar28 + uVar30 >> 1" (binary_expression "uVar28 + uVar30" identifier + identifier) >> number_literal)) ;) (expression_statement "uVar40 = uVar30;" (assignment_expression "uVar40 = uVar30" identifier = identifier) ;) (expression_statement "uVar30 = uVar41;" (assignment_expression "uVar30 = uVar41" identifier = identifier) ;) (expression_statement "iVar31 = local_78[uVar41];" (assignment_expression "iVar31 = local_78[uVar41]" identifier = (subscript_expression "local_78[uVar41]" identifier [ identifier ])) ;) })) })) (expression_statement "uVar28 = uVar30 + 1;" (assignment_expression "uVar28 = uVar30 + 1" identifier = (binary_expression "uVar30 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar28 < uVar40)" ( (binary_expression "uVar28 < uVar40" identifier < identifier) )) ;)) (labeled_statement "LAB_000289b4:\n  if (local_78[uVar28] == iVar32) {\nLAB_00028908:\n    iVar29 = iVar29 + 1;\n    aVar14 = (anon_union_4_5_a39f51ca_for_opr)current_token._4_4_;\n    if ((int)current_token._4_4_ <= iVar29) goto LAB_000289f2;\n    goto LAB_00028917;\n  }" statement_identifier : (if_statement "if (local_78[uVar28] == iVar32) {\nLAB_00028908:\n    iVar29 = iVar29 + 1;\n    aVar14 = (anon_union_4_5_a39f51ca_for_opr)current_token._4_4_;\n    if ((int)current_token._4_4_ <= iVar29) goto LAB_000289f2;\n    goto LAB_00028917;\n  }" if (parenthesized_expression "(local_78[uVar28] == iVar32)" ( (binary_expression "local_78[uVar28] == iVar32" (subscript_expression "local_78[uVar28]" identifier [ identifier ]) == identifier) )) (compound_statement "{\nLAB_00028908:\n    iVar29 = iVar29 + 1;\n    aVar14 = (anon_union_4_5_a39f51ca_for_opr)current_token._4_4_;\n    if ((int)current_token._4_4_ <= iVar29) goto LAB_000289f2;\n    goto LAB_00028917;\n  }" { (labeled_statement "LAB_00028908:\n    iVar29 = iVar29 + 1;" statement_identifier : (expression_statement "iVar29 = iVar29 + 1;" (assignment_expression "iVar29 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;)) (expression_statement "aVar14 = (anon_union_4_5_a39f51ca_for_opr)current_token._4_4_;" (assignment_expression "aVar14 = (anon_union_4_5_a39f51ca_for_opr)current_token._4_4_" identifier = (cast_expression "(anon_union_4_5_a39f51ca_for_opr)current_token._4_4_" ( (type_descriptor "anon_union_4_5_a39f51ca_for_opr" type_identifier) ) (field_expression "current_token._4_4_" identifier . field_identifier))) ;) (if_statement "if ((int)current_token._4_4_ <= iVar29) goto LAB_000289f2;" if (parenthesized_expression "((int)current_token._4_4_ <= iVar29)" ( (binary_expression "(int)current_token._4_4_ <= iVar29" (cast_expression "(int)current_token._4_4_" ( (type_descriptor "int" primitive_type) ) (field_expression "current_token._4_4_" identifier . field_identifier)) <= identifier) )) (goto_statement "goto LAB_000289f2;" goto statement_identifier ;)) (goto_statement "goto LAB_00028917;" goto statement_identifier ;) }))) (expression_statement "rVar15 = re_node_set_merge((re_node_set *)&current_token,dfa->eclosures + iVar32);" (assignment_expression "rVar15 = re_node_set_merge((re_node_set *)&current_token,dfa->eclosures + iVar32)" identifier = (call_expression "re_node_set_merge((re_node_set *)&current_token,dfa->eclosures + iVar32)" identifier (argument_list "((re_node_set *)&current_token,dfa->eclosures + iVar32)" ( (cast_expression "(re_node_set *)&current_token" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&current_token" & identifier)) , (binary_expression "dfa->eclosures + iVar32" (field_expression "dfa->eclosures" identifier -> field_identifier) + identifier) )))) ;) (if_statement "if (rVar15 != _REG_NOERROR) goto LAB_00028a39;" if (parenthesized_expression "(rVar15 != _REG_NOERROR)" ( (binary_expression "rVar15 != _REG_NOERROR" identifier != identifier) )) (goto_statement "goto LAB_00028a39;" goto statement_identifier ;)) (expression_statement "iVar29 = 1;" (assignment_expression "iVar29 = 1" identifier = number_literal) ;) (expression_statement "aVar14 = (anon_union_4_5_a39f51ca_for_opr)current_token._4_4_;" (assignment_expression "aVar14 = (anon_union_4_5_a39f51ca_for_opr)current_token._4_4_" identifier = (cast_expression "(anon_union_4_5_a39f51ca_for_opr)current_token._4_4_" ( (type_descriptor "anon_union_4_5_a39f51ca_for_opr" type_identifier) ) (field_expression "current_token._4_4_" identifier . field_identifier))) ;) (if_statement "if ((int)current_token._4_4_ < 2) goto LAB_000289f2;" if (parenthesized_expression "((int)current_token._4_4_ < 2)" ( (binary_expression "(int)current_token._4_4_ < 2" (cast_expression "(int)current_token._4_4_" ( (type_descriptor "int" primitive_type) ) (field_expression "current_token._4_4_" identifier . field_identifier)) < number_literal) )) (goto_statement "goto LAB_000289f2;" goto statement_identifier ;)) (goto_statement "goto LAB_00028917;" goto statement_identifier ;) (labeled_statement "LAB_0002875b:\n  while( true ) {\n    prVar19 = prVar19 + uVar40;\n    prVar19->alloc = 0;\n    prVar19->nelem = 0;\n    prVar19->elems = (Idx *)0x0;\n    uVar30 = local_b0->nodes_len;\n    if (uVar30 <= uVar40 + 1) break;\n    prVar19 = local_b0->inveclosures;\n    uVar40 = uVar40 + 1;\n  }" statement_identifier : (while_statement "while( true ) {\n    prVar19 = prVar19 + uVar40;\n    prVar19->alloc = 0;\n    prVar19->nelem = 0;\n    prVar19->elems = (Idx *)0x0;\n    uVar30 = local_b0->nodes_len;\n    if (uVar30 <= uVar40 + 1) break;\n    prVar19 = local_b0->inveclosures;\n    uVar40 = uVar40 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    prVar19 = prVar19 + uVar40;\n    prVar19->alloc = 0;\n    prVar19->nelem = 0;\n    prVar19->elems = (Idx *)0x0;\n    uVar30 = local_b0->nodes_len;\n    if (uVar30 <= uVar40 + 1) break;\n    prVar19 = local_b0->inveclosures;\n    uVar40 = uVar40 + 1;\n  }" { (expression_statement "prVar19 = prVar19 + uVar40;" (assignment_expression "prVar19 = prVar19 + uVar40" identifier = (binary_expression "prVar19 + uVar40" identifier + identifier)) ;) (expression_statement "prVar19->alloc = 0;" (assignment_expression "prVar19->alloc = 0" (field_expression "prVar19->alloc" identifier -> field_identifier) = number_literal) ;) (expression_statement "prVar19->nelem = 0;" (assignment_expression "prVar19->nelem = 0" (field_expression "prVar19->nelem" identifier -> field_identifier) = number_literal) ;) (expression_statement "prVar19->elems = (Idx *)0x0;" (assignment_expression "prVar19->elems = (Idx *)0x0" (field_expression "prVar19->elems" identifier -> field_identifier) = (cast_expression "(Idx *)0x0" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar30 = local_b0->nodes_len;" (assignment_expression "uVar30 = local_b0->nodes_len" identifier = (field_expression "local_b0->nodes_len" identifier -> field_identifier)) ;) (if_statement "if (uVar30 <= uVar40 + 1) break;" if (parenthesized_expression "(uVar30 <= uVar40 + 1)" ( (binary_expression "uVar30 <= uVar40 + 1" identifier <= (binary_expression "uVar40 + 1" identifier + number_literal)) )) (break_statement "break;" break ;)) (expression_statement "prVar19 = local_b0->inveclosures;" (assignment_expression "prVar19 = local_b0->inveclosures" identifier = (field_expression "local_b0->inveclosures" identifier -> field_identifier)) ;) (expression_statement "uVar40 = uVar40 + 1;" (assignment_expression "uVar40 = uVar40 + 1" identifier = (binary_expression "uVar40 + 1" identifier + number_literal)) ;) }))) (if_statement "if (uVar30 != 0) {\n    local_9c = 0;\n    local_b0 = (re_dfa_t *)local_b0->eclosures;\n    do {\n      pIVar17 = ((re_node_set *)((int)local_b0 + local_9c * 0xc))->elems;\n      if (0 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem) {\n        iVar29 = 0;\n        do {\n          prVar19 = prVar7->inveclosures + pIVar17[iVar29];\n          iVar32 = prVar19->nelem;\n          pIVar18 = prVar19->elems;\n          if (prVar19->alloc == iVar32) {\n            prVar19->alloc = (iVar32 + 1) * 2;\n            pIVar18 = (Idx *)realloc(pIVar18,(iVar32 + 1) * 8);\n            if (pIVar18 == (Idx *)0x0) goto LAB_00028330;\n            local_b0 = (re_dfa_t *)prVar7->eclosures;\n            iVar32 = prVar19->nelem;\n            prVar19->elems = pIVar18;\n          }\n          iVar29 = iVar29 + 1;\n          prVar19->nelem = iVar32 + 1;\n          pIVar18[iVar32] = local_9c;\n        } while (iVar29 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem);\n        uVar30 = prVar7->nodes_len;\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar30);\n  }" if (parenthesized_expression "(uVar30 != 0)" ( (binary_expression "uVar30 != 0" identifier != number_literal) )) (compound_statement "{\n    local_9c = 0;\n    local_b0 = (re_dfa_t *)local_b0->eclosures;\n    do {\n      pIVar17 = ((re_node_set *)((int)local_b0 + local_9c * 0xc))->elems;\n      if (0 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem) {\n        iVar29 = 0;\n        do {\n          prVar19 = prVar7->inveclosures + pIVar17[iVar29];\n          iVar32 = prVar19->nelem;\n          pIVar18 = prVar19->elems;\n          if (prVar19->alloc == iVar32) {\n            prVar19->alloc = (iVar32 + 1) * 2;\n            pIVar18 = (Idx *)realloc(pIVar18,(iVar32 + 1) * 8);\n            if (pIVar18 == (Idx *)0x0) goto LAB_00028330;\n            local_b0 = (re_dfa_t *)prVar7->eclosures;\n            iVar32 = prVar19->nelem;\n            prVar19->elems = pIVar18;\n          }\n          iVar29 = iVar29 + 1;\n          prVar19->nelem = iVar32 + 1;\n          pIVar18[iVar32] = local_9c;\n        } while (iVar29 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem);\n        uVar30 = prVar7->nodes_len;\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar30);\n  }" { (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) (expression_statement "local_b0 = (re_dfa_t *)local_b0->eclosures;" (assignment_expression "local_b0 = (re_dfa_t *)local_b0->eclosures" identifier = (cast_expression "(re_dfa_t *)local_b0->eclosures" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_b0->eclosures" identifier -> field_identifier))) ;) (do_statement "do {\n      pIVar17 = ((re_node_set *)((int)local_b0 + local_9c * 0xc))->elems;\n      if (0 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem) {\n        iVar29 = 0;\n        do {\n          prVar19 = prVar7->inveclosures + pIVar17[iVar29];\n          iVar32 = prVar19->nelem;\n          pIVar18 = prVar19->elems;\n          if (prVar19->alloc == iVar32) {\n            prVar19->alloc = (iVar32 + 1) * 2;\n            pIVar18 = (Idx *)realloc(pIVar18,(iVar32 + 1) * 8);\n            if (pIVar18 == (Idx *)0x0) goto LAB_00028330;\n            local_b0 = (re_dfa_t *)prVar7->eclosures;\n            iVar32 = prVar19->nelem;\n            prVar19->elems = pIVar18;\n          }\n          iVar29 = iVar29 + 1;\n          prVar19->nelem = iVar32 + 1;\n          pIVar18[iVar32] = local_9c;\n        } while (iVar29 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem);\n        uVar30 = prVar7->nodes_len;\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar30);" do (compound_statement "{\n      pIVar17 = ((re_node_set *)((int)local_b0 + local_9c * 0xc))->elems;\n      if (0 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem) {\n        iVar29 = 0;\n        do {\n          prVar19 = prVar7->inveclosures + pIVar17[iVar29];\n          iVar32 = prVar19->nelem;\n          pIVar18 = prVar19->elems;\n          if (prVar19->alloc == iVar32) {\n            prVar19->alloc = (iVar32 + 1) * 2;\n            pIVar18 = (Idx *)realloc(pIVar18,(iVar32 + 1) * 8);\n            if (pIVar18 == (Idx *)0x0) goto LAB_00028330;\n            local_b0 = (re_dfa_t *)prVar7->eclosures;\n            iVar32 = prVar19->nelem;\n            prVar19->elems = pIVar18;\n          }\n          iVar29 = iVar29 + 1;\n          prVar19->nelem = iVar32 + 1;\n          pIVar18[iVar32] = local_9c;\n        } while (iVar29 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem);\n        uVar30 = prVar7->nodes_len;\n      }\n      local_9c = local_9c + 1;\n    }" { (expression_statement "pIVar17 = ((re_node_set *)((int)local_b0 + local_9c * 0xc))->elems;" (assignment_expression "pIVar17 = ((re_node_set *)((int)local_b0 + local_9c * 0xc))->elems" identifier = (field_expression "((re_node_set *)((int)local_b0 + local_9c * 0xc))->elems" (parenthesized_expression "((re_node_set *)((int)local_b0 + local_9c * 0xc))" ( (cast_expression "(re_node_set *)((int)local_b0 + local_9c * 0xc)" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_b0 + local_9c * 0xc)" ( (binary_expression "(int)local_b0 + local_9c * 0xc" (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "local_9c * 0xc" identifier * number_literal)) ))) )) -> field_identifier)) ;) (if_statement "if (0 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem) {\n        iVar29 = 0;\n        do {\n          prVar19 = prVar7->inveclosures + pIVar17[iVar29];\n          iVar32 = prVar19->nelem;\n          pIVar18 = prVar19->elems;\n          if (prVar19->alloc == iVar32) {\n            prVar19->alloc = (iVar32 + 1) * 2;\n            pIVar18 = (Idx *)realloc(pIVar18,(iVar32 + 1) * 8);\n            if (pIVar18 == (Idx *)0x0) goto LAB_00028330;\n            local_b0 = (re_dfa_t *)prVar7->eclosures;\n            iVar32 = prVar19->nelem;\n            prVar19->elems = pIVar18;\n          }\n          iVar29 = iVar29 + 1;\n          prVar19->nelem = iVar32 + 1;\n          pIVar18[iVar32] = local_9c;\n        } while (iVar29 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem);\n        uVar30 = prVar7->nodes_len;\n      }" if (parenthesized_expression "(0 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem)" ( (binary_expression "0 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem" number_literal < (field_expression "((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem" (parenthesized_expression "((re_node_set *)((int)local_b0 + local_9c * 0xc))" ( (cast_expression "(re_node_set *)((int)local_b0 + local_9c * 0xc)" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_b0 + local_9c * 0xc)" ( (binary_expression "(int)local_b0 + local_9c * 0xc" (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "local_9c * 0xc" identifier * number_literal)) ))) )) -> field_identifier)) )) (compound_statement "{\n        iVar29 = 0;\n        do {\n          prVar19 = prVar7->inveclosures + pIVar17[iVar29];\n          iVar32 = prVar19->nelem;\n          pIVar18 = prVar19->elems;\n          if (prVar19->alloc == iVar32) {\n            prVar19->alloc = (iVar32 + 1) * 2;\n            pIVar18 = (Idx *)realloc(pIVar18,(iVar32 + 1) * 8);\n            if (pIVar18 == (Idx *)0x0) goto LAB_00028330;\n            local_b0 = (re_dfa_t *)prVar7->eclosures;\n            iVar32 = prVar19->nelem;\n            prVar19->elems = pIVar18;\n          }\n          iVar29 = iVar29 + 1;\n          prVar19->nelem = iVar32 + 1;\n          pIVar18[iVar32] = local_9c;\n        } while (iVar29 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem);\n        uVar30 = prVar7->nodes_len;\n      }" { (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (do_statement "do {\n          prVar19 = prVar7->inveclosures + pIVar17[iVar29];\n          iVar32 = prVar19->nelem;\n          pIVar18 = prVar19->elems;\n          if (prVar19->alloc == iVar32) {\n            prVar19->alloc = (iVar32 + 1) * 2;\n            pIVar18 = (Idx *)realloc(pIVar18,(iVar32 + 1) * 8);\n            if (pIVar18 == (Idx *)0x0) goto LAB_00028330;\n            local_b0 = (re_dfa_t *)prVar7->eclosures;\n            iVar32 = prVar19->nelem;\n            prVar19->elems = pIVar18;\n          }\n          iVar29 = iVar29 + 1;\n          prVar19->nelem = iVar32 + 1;\n          pIVar18[iVar32] = local_9c;\n        } while (iVar29 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem);" do (compound_statement "{\n          prVar19 = prVar7->inveclosures + pIVar17[iVar29];\n          iVar32 = prVar19->nelem;\n          pIVar18 = prVar19->elems;\n          if (prVar19->alloc == iVar32) {\n            prVar19->alloc = (iVar32 + 1) * 2;\n            pIVar18 = (Idx *)realloc(pIVar18,(iVar32 + 1) * 8);\n            if (pIVar18 == (Idx *)0x0) goto LAB_00028330;\n            local_b0 = (re_dfa_t *)prVar7->eclosures;\n            iVar32 = prVar19->nelem;\n            prVar19->elems = pIVar18;\n          }\n          iVar29 = iVar29 + 1;\n          prVar19->nelem = iVar32 + 1;\n          pIVar18[iVar32] = local_9c;\n        }" { (expression_statement "prVar19 = prVar7->inveclosures + pIVar17[iVar29];" (assignment_expression "prVar19 = prVar7->inveclosures + pIVar17[iVar29]" identifier = (binary_expression "prVar7->inveclosures + pIVar17[iVar29]" (field_expression "prVar7->inveclosures" identifier -> field_identifier) + (subscript_expression "pIVar17[iVar29]" identifier [ identifier ]))) ;) (expression_statement "iVar32 = prVar19->nelem;" (assignment_expression "iVar32 = prVar19->nelem" identifier = (field_expression "prVar19->nelem" identifier -> field_identifier)) ;) (expression_statement "pIVar18 = prVar19->elems;" (assignment_expression "pIVar18 = prVar19->elems" identifier = (field_expression "prVar19->elems" identifier -> field_identifier)) ;) (if_statement "if (prVar19->alloc == iVar32) {\n            prVar19->alloc = (iVar32 + 1) * 2;\n            pIVar18 = (Idx *)realloc(pIVar18,(iVar32 + 1) * 8);\n            if (pIVar18 == (Idx *)0x0) goto LAB_00028330;\n            local_b0 = (re_dfa_t *)prVar7->eclosures;\n            iVar32 = prVar19->nelem;\n            prVar19->elems = pIVar18;\n          }" if (parenthesized_expression "(prVar19->alloc == iVar32)" ( (binary_expression "prVar19->alloc == iVar32" (field_expression "prVar19->alloc" identifier -> field_identifier) == identifier) )) (compound_statement "{\n            prVar19->alloc = (iVar32 + 1) * 2;\n            pIVar18 = (Idx *)realloc(pIVar18,(iVar32 + 1) * 8);\n            if (pIVar18 == (Idx *)0x0) goto LAB_00028330;\n            local_b0 = (re_dfa_t *)prVar7->eclosures;\n            iVar32 = prVar19->nelem;\n            prVar19->elems = pIVar18;\n          }" { (expression_statement "prVar19->alloc = (iVar32 + 1) * 2;" (assignment_expression "prVar19->alloc = (iVar32 + 1) * 2" (field_expression "prVar19->alloc" identifier -> field_identifier) = (binary_expression "(iVar32 + 1) * 2" (parenthesized_expression "(iVar32 + 1)" ( (binary_expression "iVar32 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "pIVar18 = (Idx *)realloc(pIVar18,(iVar32 + 1) * 8);" (assignment_expression "pIVar18 = (Idx *)realloc(pIVar18,(iVar32 + 1) * 8)" identifier = (cast_expression "(Idx *)realloc(pIVar18,(iVar32 + 1) * 8)" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "realloc(pIVar18,(iVar32 + 1) * 8)" identifier (argument_list "(pIVar18,(iVar32 + 1) * 8)" ( identifier , (binary_expression "(iVar32 + 1) * 8" (parenthesized_expression "(iVar32 + 1)" ( (binary_expression "iVar32 + 1" identifier + number_literal) )) * number_literal) ))))) ;) (if_statement "if (pIVar18 == (Idx *)0x0) goto LAB_00028330;" if (parenthesized_expression "(pIVar18 == (Idx *)0x0)" ( (binary_expression "pIVar18 == (Idx *)0x0" identifier == (cast_expression "(Idx *)0x0" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00028330;" goto statement_identifier ;)) (expression_statement "local_b0 = (re_dfa_t *)prVar7->eclosures;" (assignment_expression "local_b0 = (re_dfa_t *)prVar7->eclosures" identifier = (cast_expression "(re_dfa_t *)prVar7->eclosures" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "prVar7->eclosures" identifier -> field_identifier))) ;) (expression_statement "iVar32 = prVar19->nelem;" (assignment_expression "iVar32 = prVar19->nelem" identifier = (field_expression "prVar19->nelem" identifier -> field_identifier)) ;) (expression_statement "prVar19->elems = pIVar18;" (assignment_expression "prVar19->elems = pIVar18" (field_expression "prVar19->elems" identifier -> field_identifier) = identifier) ;) })) (expression_statement "iVar29 = iVar29 + 1;" (assignment_expression "iVar29 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (expression_statement "prVar19->nelem = iVar32 + 1;" (assignment_expression "prVar19->nelem = iVar32 + 1" (field_expression "prVar19->nelem" identifier -> field_identifier) = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (expression_statement "pIVar18[iVar32] = local_9c;" (assignment_expression "pIVar18[iVar32] = local_9c" (subscript_expression "pIVar18[iVar32]" identifier [ identifier ]) = identifier) ;) }) while (parenthesized_expression "(iVar29 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem)" ( (binary_expression "iVar29 < ((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem" identifier < (field_expression "((re_node_set *)((int)local_b0 + local_9c * 0xc))->nelem" (parenthesized_expression "((re_node_set *)((int)local_b0 + local_9c * 0xc))" ( (cast_expression "(re_node_set *)((int)local_b0 + local_9c * 0xc)" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_b0 + local_9c * 0xc)" ( (binary_expression "(int)local_b0 + local_9c * 0xc" (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "local_9c * 0xc" identifier * number_literal)) ))) )) -> field_identifier)) )) ;) (expression_statement "uVar30 = prVar7->nodes_len;" (assignment_expression "uVar30 = prVar7->nodes_len" identifier = (field_expression "prVar7->nodes_len" identifier -> field_identifier)) ;) })) (expression_statement "local_9c = local_9c + 1;" (assignment_expression "local_9c = local_9c + 1" identifier = (binary_expression "local_9c + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_9c < uVar30)" ( (binary_expression "local_9c < uVar30" identifier < identifier) )) ;) })) (labeled_statement "LAB_00028860:\n  err = _REG_NOERROR;" statement_identifier : (expression_statement "err = _REG_NOERROR;" (assignment_expression "err = _REG_NOERROR" identifier = identifier) ;)) (if_statement "if ((((byte)dfa->field_0x58 >> 2 & uVar28 == 0) != 0) && (preg_00->translate == (uchar *)0x0)) {\n    if (dfa->nodes_len != 0) {\n      if (0xc < (byte)dfa->nodes->field_0x4) {\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +\n                         unaff_EDI + 0xc669))();\n      return rVar15;\n    }\n    dfa->mb_cur_max = 1;\n    dfa->field_0x58 = (0 < dfa->nbackref) * '\x02' | dfa->field_0x58 & 0xf9;\n  }" if (parenthesized_expression "((((byte)dfa->field_0x58 >> 2 & uVar28 == 0) != 0) && (preg_00->translate == (uchar *)0x0))" ( (binary_expression "(((byte)dfa->field_0x58 >> 2 & uVar28 == 0) != 0) && (preg_00->translate == (uchar *)0x0)" (parenthesized_expression "(((byte)dfa->field_0x58 >> 2 & uVar28 == 0) != 0)" ( (binary_expression "((byte)dfa->field_0x58 >> 2 & uVar28 == 0) != 0" (parenthesized_expression "((byte)dfa->field_0x58 >> 2 & uVar28 == 0)" ( (binary_expression "(byte)dfa->field_0x58 >> 2 & uVar28 == 0" (binary_expression "(byte)dfa->field_0x58 >> 2" (cast_expression "(byte)dfa->field_0x58" ( (type_descriptor "byte" type_identifier) ) (field_expression "dfa->field_0x58" identifier -> field_identifier)) >> number_literal) & (binary_expression "uVar28 == 0" identifier == number_literal)) )) != number_literal) )) && (parenthesized_expression "(preg_00->translate == (uchar *)0x0)" ( (binary_expression "preg_00->translate == (uchar *)0x0" (field_expression "preg_00->translate" identifier -> field_identifier) == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    if (dfa->nodes_len != 0) {\n      if (0xc < (byte)dfa->nodes->field_0x4) {\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +\n                         unaff_EDI + 0xc669))();\n      return rVar15;\n    }\n    dfa->mb_cur_max = 1;\n    dfa->field_0x58 = (0 < dfa->nbackref) * '\x02' | dfa->field_0x58 & 0xf9;\n  }" { (if_statement "if (dfa->nodes_len != 0) {\n      if (0xc < (byte)dfa->nodes->field_0x4) {\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +\n                         unaff_EDI + 0xc669))();\n      return rVar15;\n    }" if (parenthesized_expression "(dfa->nodes_len != 0)" ( (binary_expression "dfa->nodes_len != 0" (field_expression "dfa->nodes_len" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n      if (0xc < (byte)dfa->nodes->field_0x4) {\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }\n                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +\n                         unaff_EDI + 0xc669))();\n      return rVar15;\n    }" { (if_statement "if (0xc < (byte)dfa->nodes->field_0x4) {\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }" if (parenthesized_expression "(0xc < (byte)dfa->nodes->field_0x4)" ( (binary_expression "0xc < (byte)dfa->nodes->field_0x4" number_literal < (cast_expression "(byte)dfa->nodes->field_0x4" ( (type_descriptor "byte" type_identifier) ) (field_expression "dfa->nodes->field_0x4" (field_expression "dfa->nodes" identifier -> field_identifier) -> field_identifier))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        abort();\n      }" { comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) comment comment (expression_statement "rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +\n                         unaff_EDI + 0xc669))();" (assignment_expression "rVar15 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +\n                         unaff_EDI + 0xc669))()" identifier = (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +\n                         unaff_EDI + 0xc669))()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +\n                         unaff_EDI + 0xc669))" ( (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +\n                         unaff_EDI + 0xc669)" * (cast_expression "(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +\n                         unaff_EDI + 0xc669)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +\n                         unaff_EDI + 0xc669)" ( (binary_expression "*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +\n                         unaff_EDI + 0xc669" (binary_expression "*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4) +\n                         unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4)" ( (binary_expression "unaff_EDI + 0x5821 + (uint)(byte)dfa->nodes->field_0x4 * 4" (binary_expression "unaff_EDI + 0x5821" identifier + number_literal) + (binary_expression "(uint)(byte)dfa->nodes->field_0x4 * 4" (cast_expression "(uint)(byte)dfa->nodes->field_0x4" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)dfa->nodes->field_0x4" ( (type_descriptor "byte" type_identifier) ) (field_expression "dfa->nodes->field_0x4" (field_expression "dfa->nodes" identifier -> field_identifier) -> field_identifier))) * number_literal)) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( )))) ;) (return_statement "return rVar15;" return identifier ;) })) (expression_statement "dfa->mb_cur_max = 1;" (assignment_expression "dfa->mb_cur_max = 1" (field_expression "dfa->mb_cur_max" identifier -> field_identifier) = number_literal) ;) (expression_statement "dfa->field_0x58 = (0 < dfa->nbackref) * '\x02' | dfa->field_0x58 & 0xf9;" (assignment_expression "dfa->field_0x58 = (0 < dfa->nbackref) * '\x02' | dfa->field_0x58 & 0xf9" (field_expression "dfa->field_0x58" identifier -> field_identifier) = (binary_expression "(0 < dfa->nbackref) * '\x02' | dfa->field_0x58 & 0xf9" (binary_expression "(0 < dfa->nbackref) * '\x02'" (parenthesized_expression "(0 < dfa->nbackref)" ( (binary_expression "0 < dfa->nbackref" number_literal < (field_expression "dfa->nbackref" identifier -> field_identifier)) )) * (char_literal "'\x02'" ' escape_sequence ')) | (binary_expression "dfa->field_0x58 & 0xf9" (field_expression "dfa->field_0x58" identifier -> field_identifier) & number_literal))) ;) })) (expression_statement "iVar29 = dfa->str_tree->first->node_idx;" (assignment_expression "iVar29 = dfa->str_tree->first->node_idx" identifier = (field_expression "dfa->str_tree->first->node_idx" (field_expression "dfa->str_tree->first" (field_expression "dfa->str_tree" identifier -> field_identifier) -> field_identifier) -> field_identifier)) ;) (expression_statement "dfa->init_node = iVar29;" (assignment_expression "dfa->init_node = iVar29" (field_expression "dfa->init_node" identifier -> field_identifier) = identifier) ;) (expression_statement "prVar19 = dfa->eclosures;" (assignment_expression "prVar19 = dfa->eclosures" identifier = (field_expression "dfa->eclosures" identifier -> field_identifier)) ;) (expression_statement "aVar14 = (anon_union_4_5_a39f51ca_for_opr)prVar19[iVar29].nelem;" (assignment_expression "aVar14 = (anon_union_4_5_a39f51ca_for_opr)prVar19[iVar29].nelem" identifier = (cast_expression "(anon_union_4_5_a39f51ca_for_opr)prVar19[iVar29].nelem" ( (type_descriptor "anon_union_4_5_a39f51ca_for_opr" type_identifier) ) (field_expression "prVar19[iVar29].nelem" (subscript_expression "prVar19[iVar29]" identifier [ identifier ]) . field_identifier))) ;) (if_statement "if (aVar14.idx < 1) {\n    current_token.opr.sbcset = (re_bitset_ptr_t)0x0;\n    current_token._4_4_ = 0;\n    local_78 = (Idx *)0x0;\n    err_2 = _REG_NOERROR;\nLAB_000289f2:\n    prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,0);\n    dfa->init_state = prVar24;\n    rVar15 = err_2;\n    if (prVar24 != (re_dfastate_t *)0x0) {\n      if ((char)prVar24->field_0x34 < '\0') {\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,1);\n        dfa->init_state_word = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,2);\n        dfa->init_state_nl = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,6);\n        dfa->init_state_begbuf = prVar24;\n        rVar15 = err_2;\n        if (((dfa->init_state_word == (re_dfastate_t *)0x0) ||\n            (dfa->init_state_nl == (re_dfastate_t *)0x0)) || (prVar24 == (re_dfastate_t *)0x0))\n        goto LAB_00028a39;\n      }\n      else {\n        dfa->init_state_begbuf = prVar24;\n        dfa->init_state_nl = prVar24;\n        dfa->init_state_word = prVar24;\n      }\n      free(local_78);\n      rVar15 = _REG_NOERROR;\n    }\n  }\n  else {\n    current_token.opr = aVar14;\n    current_token._4_4_ = aVar14;\n    local_78 = (Idx *)malloc(aVar14.idx * 4);\n    if (local_78 != (Idx *)0x0) {\n      memcpy(local_78,prVar19[iVar29].elems,aVar14.idx * 4);\n      err_2 = _REG_NOERROR;\n      if (0 < dfa->nbackref) {\n        iVar29 = 0;\nLAB_00028917:\n        prVar9 = dfa->nodes + local_78[iVar29];\n        if (prVar9->field_0x4 == '\x04') {\n          pbVar35 = (re_bitset_ptr_t)0x0;\n          do {\n            prVar1 = dfa->nodes + local_78[(int)pbVar35];\n            if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {\n              uVar40 = aVar14.idx - 1;\n              uVar28 = 0;\n              iVar32 = *dfa->edests[local_78[iVar29]].elems;\n              if (uVar40 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1);\n          } while (aVar14.sbcset != pbVar35);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    rVar15 = _REG_ESPACE;\n  }" if (parenthesized_expression "(aVar14.idx < 1)" ( (binary_expression "aVar14.idx < 1" (field_expression "aVar14.idx" identifier . field_identifier) < number_literal) )) (compound_statement "{\n    current_token.opr.sbcset = (re_bitset_ptr_t)0x0;\n    current_token._4_4_ = 0;\n    local_78 = (Idx *)0x0;\n    err_2 = _REG_NOERROR;\nLAB_000289f2:\n    prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,0);\n    dfa->init_state = prVar24;\n    rVar15 = err_2;\n    if (prVar24 != (re_dfastate_t *)0x0) {\n      if ((char)prVar24->field_0x34 < '\0') {\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,1);\n        dfa->init_state_word = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,2);\n        dfa->init_state_nl = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,6);\n        dfa->init_state_begbuf = prVar24;\n        rVar15 = err_2;\n        if (((dfa->init_state_word == (re_dfastate_t *)0x0) ||\n            (dfa->init_state_nl == (re_dfastate_t *)0x0)) || (prVar24 == (re_dfastate_t *)0x0))\n        goto LAB_00028a39;\n      }\n      else {\n        dfa->init_state_begbuf = prVar24;\n        dfa->init_state_nl = prVar24;\n        dfa->init_state_word = prVar24;\n      }\n      free(local_78);\n      rVar15 = _REG_NOERROR;\n    }\n  }" { (expression_statement "current_token.opr.sbcset = (re_bitset_ptr_t)0x0;" (assignment_expression "current_token.opr.sbcset = (re_bitset_ptr_t)0x0" (field_expression "current_token.opr.sbcset" (field_expression "current_token.opr" identifier . field_identifier) . field_identifier) = (cast_expression "(re_bitset_ptr_t)0x0" ( (type_descriptor "re_bitset_ptr_t" type_identifier) ) number_literal)) ;) (expression_statement "current_token._4_4_ = 0;" (assignment_expression "current_token._4_4_ = 0" (field_expression "current_token._4_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "local_78 = (Idx *)0x0;" (assignment_expression "local_78 = (Idx *)0x0" identifier = (cast_expression "(Idx *)0x0" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "err_2 = _REG_NOERROR;" (assignment_expression "err_2 = _REG_NOERROR" identifier = identifier) ;) (labeled_statement "LAB_000289f2:\n    prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,0);" statement_identifier : (expression_statement "prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,0);" (assignment_expression "prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,0)" identifier = (call_expression "re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,0)" identifier (argument_list "(&err_2,dfa,(re_node_set *)&current_token,0)" ( (pointer_expression "&err_2" & identifier) , identifier , (cast_expression "(re_node_set *)&current_token" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&current_token" & identifier)) , number_literal )))) ;)) (expression_statement "dfa->init_state = prVar24;" (assignment_expression "dfa->init_state = prVar24" (field_expression "dfa->init_state" identifier -> field_identifier) = identifier) ;) (expression_statement "rVar15 = err_2;" (assignment_expression "rVar15 = err_2" identifier = identifier) ;) (if_statement "if (prVar24 != (re_dfastate_t *)0x0) {\n      if ((char)prVar24->field_0x34 < '\0') {\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,1);\n        dfa->init_state_word = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,2);\n        dfa->init_state_nl = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,6);\n        dfa->init_state_begbuf = prVar24;\n        rVar15 = err_2;\n        if (((dfa->init_state_word == (re_dfastate_t *)0x0) ||\n            (dfa->init_state_nl == (re_dfastate_t *)0x0)) || (prVar24 == (re_dfastate_t *)0x0))\n        goto LAB_00028a39;\n      }\n      else {\n        dfa->init_state_begbuf = prVar24;\n        dfa->init_state_nl = prVar24;\n        dfa->init_state_word = prVar24;\n      }\n      free(local_78);\n      rVar15 = _REG_NOERROR;\n    }" if (parenthesized_expression "(prVar24 != (re_dfastate_t *)0x0)" ( (binary_expression "prVar24 != (re_dfastate_t *)0x0" identifier != (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((char)prVar24->field_0x34 < '\0') {\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,1);\n        dfa->init_state_word = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,2);\n        dfa->init_state_nl = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,6);\n        dfa->init_state_begbuf = prVar24;\n        rVar15 = err_2;\n        if (((dfa->init_state_word == (re_dfastate_t *)0x0) ||\n            (dfa->init_state_nl == (re_dfastate_t *)0x0)) || (prVar24 == (re_dfastate_t *)0x0))\n        goto LAB_00028a39;\n      }\n      else {\n        dfa->init_state_begbuf = prVar24;\n        dfa->init_state_nl = prVar24;\n        dfa->init_state_word = prVar24;\n      }\n      free(local_78);\n      rVar15 = _REG_NOERROR;\n    }" { (if_statement "if ((char)prVar24->field_0x34 < '\0') {\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,1);\n        dfa->init_state_word = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,2);\n        dfa->init_state_nl = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,6);\n        dfa->init_state_begbuf = prVar24;\n        rVar15 = err_2;\n        if (((dfa->init_state_word == (re_dfastate_t *)0x0) ||\n            (dfa->init_state_nl == (re_dfastate_t *)0x0)) || (prVar24 == (re_dfastate_t *)0x0))\n        goto LAB_00028a39;\n      }\n      else {\n        dfa->init_state_begbuf = prVar24;\n        dfa->init_state_nl = prVar24;\n        dfa->init_state_word = prVar24;\n      }" if (parenthesized_expression "((char)prVar24->field_0x34 < '\0')" ( (binary_expression "(char)prVar24->field_0x34 < '\0'" (cast_expression "(char)prVar24->field_0x34" ( (type_descriptor "char" primitive_type) ) (field_expression "prVar24->field_0x34" identifier -> field_identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,1);\n        dfa->init_state_word = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,2);\n        dfa->init_state_nl = prVar24;\n        prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,6);\n        dfa->init_state_begbuf = prVar24;\n        rVar15 = err_2;\n        if (((dfa->init_state_word == (re_dfastate_t *)0x0) ||\n            (dfa->init_state_nl == (re_dfastate_t *)0x0)) || (prVar24 == (re_dfastate_t *)0x0))\n        goto LAB_00028a39;\n      }" { (expression_statement "prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,1);" (assignment_expression "prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,1)" identifier = (call_expression "re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,1)" identifier (argument_list "(&err_2,dfa,(re_node_set *)&current_token,1)" ( (pointer_expression "&err_2" & identifier) , identifier , (cast_expression "(re_node_set *)&current_token" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&current_token" & identifier)) , number_literal )))) ;) (expression_statement "dfa->init_state_word = prVar24;" (assignment_expression "dfa->init_state_word = prVar24" (field_expression "dfa->init_state_word" identifier -> field_identifier) = identifier) ;) (expression_statement "prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,2);" (assignment_expression "prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,2)" identifier = (call_expression "re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,2)" identifier (argument_list "(&err_2,dfa,(re_node_set *)&current_token,2)" ( (pointer_expression "&err_2" & identifier) , identifier , (cast_expression "(re_node_set *)&current_token" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&current_token" & identifier)) , number_literal )))) ;) (expression_statement "dfa->init_state_nl = prVar24;" (assignment_expression "dfa->init_state_nl = prVar24" (field_expression "dfa->init_state_nl" identifier -> field_identifier) = identifier) ;) (expression_statement "prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,6);" (assignment_expression "prVar24 = re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,6)" identifier = (call_expression "re_acquire_state_context(&err_2,dfa,(re_node_set *)&current_token,6)" identifier (argument_list "(&err_2,dfa,(re_node_set *)&current_token,6)" ( (pointer_expression "&err_2" & identifier) , identifier , (cast_expression "(re_node_set *)&current_token" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&current_token" & identifier)) , number_literal )))) ;) (expression_statement "dfa->init_state_begbuf = prVar24;" (assignment_expression "dfa->init_state_begbuf = prVar24" (field_expression "dfa->init_state_begbuf" identifier -> field_identifier) = identifier) ;) (expression_statement "rVar15 = err_2;" (assignment_expression "rVar15 = err_2" identifier = identifier) ;) (if_statement "if (((dfa->init_state_word == (re_dfastate_t *)0x0) ||\n            (dfa->init_state_nl == (re_dfastate_t *)0x0)) || (prVar24 == (re_dfastate_t *)0x0))\n        goto LAB_00028a39;" if (parenthesized_expression "(((dfa->init_state_word == (re_dfastate_t *)0x0) ||\n            (dfa->init_state_nl == (re_dfastate_t *)0x0)) || (prVar24 == (re_dfastate_t *)0x0))" ( (binary_expression "((dfa->init_state_word == (re_dfastate_t *)0x0) ||\n            (dfa->init_state_nl == (re_dfastate_t *)0x0)) || (prVar24 == (re_dfastate_t *)0x0)" (parenthesized_expression "((dfa->init_state_word == (re_dfastate_t *)0x0) ||\n            (dfa->init_state_nl == (re_dfastate_t *)0x0))" ( (binary_expression "(dfa->init_state_word == (re_dfastate_t *)0x0) ||\n            (dfa->init_state_nl == (re_dfastate_t *)0x0)" (parenthesized_expression "(dfa->init_state_word == (re_dfastate_t *)0x0)" ( (binary_expression "dfa->init_state_word == (re_dfastate_t *)0x0" (field_expression "dfa->init_state_word" identifier -> field_identifier) == (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(dfa->init_state_nl == (re_dfastate_t *)0x0)" ( (binary_expression "dfa->init_state_nl == (re_dfastate_t *)0x0" (field_expression "dfa->init_state_nl" identifier -> field_identifier) == (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "(prVar24 == (re_dfastate_t *)0x0)" ( (binary_expression "prVar24 == (re_dfastate_t *)0x0" identifier == (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto LAB_00028a39;" goto statement_identifier ;)) }) (else_clause "else {\n        dfa->init_state_begbuf = prVar24;\n        dfa->init_state_nl = prVar24;\n        dfa->init_state_word = prVar24;\n      }" else (compound_statement "{\n        dfa->init_state_begbuf = prVar24;\n        dfa->init_state_nl = prVar24;\n        dfa->init_state_word = prVar24;\n      }" { (expression_statement "dfa->init_state_begbuf = prVar24;" (assignment_expression "dfa->init_state_begbuf = prVar24" (field_expression "dfa->init_state_begbuf" identifier -> field_identifier) = identifier) ;) (expression_statement "dfa->init_state_nl = prVar24;" (assignment_expression "dfa->init_state_nl = prVar24" (field_expression "dfa->init_state_nl" identifier -> field_identifier) = identifier) ;) (expression_statement "dfa->init_state_word = prVar24;" (assignment_expression "dfa->init_state_word = prVar24" (field_expression "dfa->init_state_word" identifier -> field_identifier) = identifier) ;) }))) (expression_statement "free(local_78);" (call_expression "free(local_78)" identifier (argument_list "(local_78)" ( identifier ))) ;) (expression_statement "rVar15 = _REG_NOERROR;" (assignment_expression "rVar15 = _REG_NOERROR" identifier = identifier) ;) })) }) (else_clause "else {\n    current_token.opr = aVar14;\n    current_token._4_4_ = aVar14;\n    local_78 = (Idx *)malloc(aVar14.idx * 4);\n    if (local_78 != (Idx *)0x0) {\n      memcpy(local_78,prVar19[iVar29].elems,aVar14.idx * 4);\n      err_2 = _REG_NOERROR;\n      if (0 < dfa->nbackref) {\n        iVar29 = 0;\nLAB_00028917:\n        prVar9 = dfa->nodes + local_78[iVar29];\n        if (prVar9->field_0x4 == '\x04') {\n          pbVar35 = (re_bitset_ptr_t)0x0;\n          do {\n            prVar1 = dfa->nodes + local_78[(int)pbVar35];\n            if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {\n              uVar40 = aVar14.idx - 1;\n              uVar28 = 0;\n              iVar32 = *dfa->edests[local_78[iVar29]].elems;\n              if (uVar40 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1);\n          } while (aVar14.sbcset != pbVar35);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    rVar15 = _REG_ESPACE;\n  }" else (compound_statement "{\n    current_token.opr = aVar14;\n    current_token._4_4_ = aVar14;\n    local_78 = (Idx *)malloc(aVar14.idx * 4);\n    if (local_78 != (Idx *)0x0) {\n      memcpy(local_78,prVar19[iVar29].elems,aVar14.idx * 4);\n      err_2 = _REG_NOERROR;\n      if (0 < dfa->nbackref) {\n        iVar29 = 0;\nLAB_00028917:\n        prVar9 = dfa->nodes + local_78[iVar29];\n        if (prVar9->field_0x4 == '\x04') {\n          pbVar35 = (re_bitset_ptr_t)0x0;\n          do {\n            prVar1 = dfa->nodes + local_78[(int)pbVar35];\n            if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {\n              uVar40 = aVar14.idx - 1;\n              uVar28 = 0;\n              iVar32 = *dfa->edests[local_78[iVar29]].elems;\n              if (uVar40 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1);\n          } while (aVar14.sbcset != pbVar35);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    rVar15 = _REG_ESPACE;\n  }" { (expression_statement "current_token.opr = aVar14;" (assignment_expression "current_token.opr = aVar14" (field_expression "current_token.opr" identifier . field_identifier) = identifier) ;) (expression_statement "current_token._4_4_ = aVar14;" (assignment_expression "current_token._4_4_ = aVar14" (field_expression "current_token._4_4_" identifier . field_identifier) = identifier) ;) (expression_statement "local_78 = (Idx *)malloc(aVar14.idx * 4);" (assignment_expression "local_78 = (Idx *)malloc(aVar14.idx * 4)" identifier = (cast_expression "(Idx *)malloc(aVar14.idx * 4)" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(aVar14.idx * 4)" identifier (argument_list "(aVar14.idx * 4)" ( (binary_expression "aVar14.idx * 4" (field_expression "aVar14.idx" identifier . field_identifier) * number_literal) ))))) ;) (if_statement "if (local_78 != (Idx *)0x0) {\n      memcpy(local_78,prVar19[iVar29].elems,aVar14.idx * 4);\n      err_2 = _REG_NOERROR;\n      if (0 < dfa->nbackref) {\n        iVar29 = 0;\nLAB_00028917:\n        prVar9 = dfa->nodes + local_78[iVar29];\n        if (prVar9->field_0x4 == '\x04') {\n          pbVar35 = (re_bitset_ptr_t)0x0;\n          do {\n            prVar1 = dfa->nodes + local_78[(int)pbVar35];\n            if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {\n              uVar40 = aVar14.idx - 1;\n              uVar28 = 0;\n              iVar32 = *dfa->edests[local_78[iVar29]].elems;\n              if (uVar40 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1);\n          } while (aVar14.sbcset != pbVar35);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }" if (parenthesized_expression "(local_78 != (Idx *)0x0)" ( (binary_expression "local_78 != (Idx *)0x0" identifier != (cast_expression "(Idx *)0x0" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      memcpy(local_78,prVar19[iVar29].elems,aVar14.idx * 4);\n      err_2 = _REG_NOERROR;\n      if (0 < dfa->nbackref) {\n        iVar29 = 0;\nLAB_00028917:\n        prVar9 = dfa->nodes + local_78[iVar29];\n        if (prVar9->field_0x4 == '\x04') {\n          pbVar35 = (re_bitset_ptr_t)0x0;\n          do {\n            prVar1 = dfa->nodes + local_78[(int)pbVar35];\n            if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {\n              uVar40 = aVar14.idx - 1;\n              uVar28 = 0;\n              iVar32 = *dfa->edests[local_78[iVar29]].elems;\n              if (uVar40 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1);\n          } while (aVar14.sbcset != pbVar35);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }" { (expression_statement "memcpy(local_78,prVar19[iVar29].elems,aVar14.idx * 4);" (call_expression "memcpy(local_78,prVar19[iVar29].elems,aVar14.idx * 4)" identifier (argument_list "(local_78,prVar19[iVar29].elems,aVar14.idx * 4)" ( identifier , (field_expression "prVar19[iVar29].elems" (subscript_expression "prVar19[iVar29]" identifier [ identifier ]) . field_identifier) , (binary_expression "aVar14.idx * 4" (field_expression "aVar14.idx" identifier . field_identifier) * number_literal) ))) ;) (expression_statement "err_2 = _REG_NOERROR;" (assignment_expression "err_2 = _REG_NOERROR" identifier = identifier) ;) (if_statement "if (0 < dfa->nbackref) {\n        iVar29 = 0;\nLAB_00028917:\n        prVar9 = dfa->nodes + local_78[iVar29];\n        if (prVar9->field_0x4 == '\x04') {\n          pbVar35 = (re_bitset_ptr_t)0x0;\n          do {\n            prVar1 = dfa->nodes + local_78[(int)pbVar35];\n            if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {\n              uVar40 = aVar14.idx - 1;\n              uVar28 = 0;\n              iVar32 = *dfa->edests[local_78[iVar29]].elems;\n              if (uVar40 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1);\n          } while (aVar14.sbcset != pbVar35);\n        }\n        goto LAB_00028908;\n      }" if (parenthesized_expression "(0 < dfa->nbackref)" ( (binary_expression "0 < dfa->nbackref" number_literal < (field_expression "dfa->nbackref" identifier -> field_identifier)) )) (compound_statement "{\n        iVar29 = 0;\nLAB_00028917:\n        prVar9 = dfa->nodes + local_78[iVar29];\n        if (prVar9->field_0x4 == '\x04') {\n          pbVar35 = (re_bitset_ptr_t)0x0;\n          do {\n            prVar1 = dfa->nodes + local_78[(int)pbVar35];\n            if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {\n              uVar40 = aVar14.idx - 1;\n              uVar28 = 0;\n              iVar32 = *dfa->edests[local_78[iVar29]].elems;\n              if (uVar40 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1);\n          } while (aVar14.sbcset != pbVar35);\n        }\n        goto LAB_00028908;\n      }" { (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00028917:\n        prVar9 = dfa->nodes + local_78[iVar29];" statement_identifier : (expression_statement "prVar9 = dfa->nodes + local_78[iVar29];" (assignment_expression "prVar9 = dfa->nodes + local_78[iVar29]" identifier = (binary_expression "dfa->nodes + local_78[iVar29]" (field_expression "dfa->nodes" identifier -> field_identifier) + (subscript_expression "local_78[iVar29]" identifier [ identifier ]))) ;)) (if_statement "if (prVar9->field_0x4 == '\x04') {\n          pbVar35 = (re_bitset_ptr_t)0x0;\n          do {\n            prVar1 = dfa->nodes + local_78[(int)pbVar35];\n            if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {\n              uVar40 = aVar14.idx - 1;\n              uVar28 = 0;\n              iVar32 = *dfa->edests[local_78[iVar29]].elems;\n              if (uVar40 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1);\n          } while (aVar14.sbcset != pbVar35);\n        }" if (parenthesized_expression "(prVar9->field_0x4 == '\x04')" ( (binary_expression "prVar9->field_0x4 == '\x04'" (field_expression "prVar9->field_0x4" identifier -> field_identifier) == (char_literal "'\x04'" ' escape_sequence ')) )) (compound_statement "{\n          pbVar35 = (re_bitset_ptr_t)0x0;\n          do {\n            prVar1 = dfa->nodes + local_78[(int)pbVar35];\n            if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {\n              uVar40 = aVar14.idx - 1;\n              uVar28 = 0;\n              iVar32 = *dfa->edests[local_78[iVar29]].elems;\n              if (uVar40 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1);\n          } while (aVar14.sbcset != pbVar35);\n        }" { (expression_statement "pbVar35 = (re_bitset_ptr_t)0x0;" (assignment_expression "pbVar35 = (re_bitset_ptr_t)0x0" identifier = (cast_expression "(re_bitset_ptr_t)0x0" ( (type_descriptor "re_bitset_ptr_t" type_identifier) ) number_literal)) ;) (do_statement "do {\n            prVar1 = dfa->nodes + local_78[(int)pbVar35];\n            if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {\n              uVar40 = aVar14.idx - 1;\n              uVar28 = 0;\n              iVar32 = *dfa->edests[local_78[iVar29]].elems;\n              if (uVar40 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1);\n          } while (aVar14.sbcset != pbVar35);" do (compound_statement "{\n            prVar1 = dfa->nodes + local_78[(int)pbVar35];\n            if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {\n              uVar40 = aVar14.idx - 1;\n              uVar28 = 0;\n              iVar32 = *dfa->edests[local_78[iVar29]].elems;\n              if (uVar40 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1);\n          }" { (expression_statement "prVar1 = dfa->nodes + local_78[(int)pbVar35];" (assignment_expression "prVar1 = dfa->nodes + local_78[(int)pbVar35]" identifier = (binary_expression "dfa->nodes + local_78[(int)pbVar35]" (field_expression "dfa->nodes" identifier -> field_identifier) + (subscript_expression "local_78[(int)pbVar35]" identifier [ (cast_expression "(int)pbVar35" ( (type_descriptor "int" primitive_type) ) identifier) ]))) ;) (if_statement "if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {\n              uVar40 = aVar14.idx - 1;\n              uVar28 = 0;\n              iVar32 = *dfa->edests[local_78[iVar29]].elems;\n              if (uVar40 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }" if (parenthesized_expression "((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset))" ( (binary_expression "(prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)" (parenthesized_expression "(prVar1->field_0x4 == '\t')" ( (binary_expression "prVar1->field_0x4 == '\t'" (field_expression "prVar1->field_0x4" identifier -> field_identifier) == (char_literal "'\t'" ' escape_sequence ')) )) && (parenthesized_expression "((prVar1->opr).sbcset == (prVar9->opr).sbcset)" ( (binary_expression "(prVar1->opr).sbcset == (prVar9->opr).sbcset" (field_expression "(prVar1->opr).sbcset" (parenthesized_expression "(prVar1->opr)" ( (field_expression "prVar1->opr" identifier -> field_identifier) )) . field_identifier) == (field_expression "(prVar9->opr).sbcset" (parenthesized_expression "(prVar9->opr)" ( (field_expression "prVar9->opr" identifier -> field_identifier) )) . field_identifier)) ))) )) (compound_statement "{\n              uVar40 = aVar14.idx - 1;\n              uVar28 = 0;\n              iVar32 = *dfa->edests[local_78[iVar29]].elems;\n              if (uVar40 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }" { (expression_statement "uVar40 = aVar14.idx - 1;" (assignment_expression "uVar40 = aVar14.idx - 1" identifier = (binary_expression "aVar14.idx - 1" (field_expression "aVar14.idx" identifier . field_identifier) - number_literal)) ;) (expression_statement "uVar28 = 0;" (assignment_expression "uVar28 = 0" identifier = number_literal) ;) (expression_statement "iVar32 = *dfa->edests[local_78[iVar29]].elems;" (assignment_expression "iVar32 = *dfa->edests[local_78[iVar29]].elems" identifier = (pointer_expression "*dfa->edests[local_78[iVar29]].elems" * (field_expression "dfa->edests[local_78[iVar29]].elems" (subscript_expression "dfa->edests[local_78[iVar29]]" (field_expression "dfa->edests" identifier -> field_identifier) [ (subscript_expression "local_78[iVar29]" identifier [ identifier ]) ]) . field_identifier))) ;) (if_statement "if (uVar40 == 0) goto LAB_000289b4;" if (parenthesized_expression "(uVar40 == 0)" ( (binary_expression "uVar40 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000289b4;" goto statement_identifier ;)) (goto_statement "goto LAB_0002897d;" goto statement_identifier ;) })) (expression_statement "pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1);" (assignment_expression "pbVar35 = (re_bitset_ptr_t)((int)pbVar35 + 1)" identifier = (call_expression "(re_bitset_ptr_t)((int)pbVar35 + 1)" (parenthesized_expression "(re_bitset_ptr_t)" ( identifier )) (argument_list "((int)pbVar35 + 1)" ( (binary_expression "(int)pbVar35 + 1" (cast_expression "(int)pbVar35" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(aVar14.sbcset != pbVar35)" ( (binary_expression "aVar14.sbcset != pbVar35" (field_expression "aVar14.sbcset" identifier . field_identifier) != identifier) )) ;) })) (goto_statement "goto LAB_00028908;" goto statement_identifier ;) })) (goto_statement "goto LAB_000289f2;" goto statement_identifier ;) })) (expression_statement "rVar15 = _REG_ESPACE;" (assignment_expression "rVar15 = _REG_ESPACE" identifier = identifier) ;) }))) (labeled_statement "LAB_00028a39:\n  prVar7 = preg_00->buffer;" statement_identifier : (expression_statement "prVar7 = preg_00->buffer;" (assignment_expression "prVar7 = preg_00->buffer" identifier = (field_expression "preg_00->buffer" identifier -> field_identifier)) ;)) (expression_statement "pbVar26 = prVar7->str_tree_storage;" (assignment_expression "pbVar26 = prVar7->str_tree_storage" identifier = (field_expression "prVar7->str_tree_storage" identifier -> field_identifier)) ;) (expression_statement "err = rVar15;" (assignment_expression "err = rVar15" identifier = identifier) ;) (while_statement "while (pbVar26 != (bin_tree_storage_t *)0x0) {\n    pbVar6 = pbVar26->next;\n    free(pbVar26);\n    pbVar26 = pbVar6;\n  }" while (parenthesized_expression "(pbVar26 != (bin_tree_storage_t *)0x0)" ( (binary_expression "pbVar26 != (bin_tree_storage_t *)0x0" identifier != (cast_expression "(bin_tree_storage_t *)0x0" ( (type_descriptor "bin_tree_storage_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pbVar6 = pbVar26->next;\n    free(pbVar26);\n    pbVar26 = pbVar6;\n  }" { (expression_statement "pbVar6 = pbVar26->next;" (assignment_expression "pbVar6 = pbVar26->next" identifier = (field_expression "pbVar26->next" identifier -> field_identifier)) ;) (expression_statement "free(pbVar26);" (call_expression "free(pbVar26)" identifier (argument_list "(pbVar26)" ( identifier ))) ;) (expression_statement "pbVar26 = pbVar6;" (assignment_expression "pbVar26 = pbVar6" identifier = identifier) ;) })) (expression_statement "prVar7->str_tree_storage = (bin_tree_storage_t *)0x0;" (assignment_expression "prVar7->str_tree_storage = (bin_tree_storage_t *)0x0" (field_expression "prVar7->str_tree_storage" identifier -> field_identifier) = (cast_expression "(bin_tree_storage_t *)0x0" ( (type_descriptor "bin_tree_storage_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "prVar7->str_tree_storage_idx = 0x1f;" (assignment_expression "prVar7->str_tree_storage_idx = 0x1f" (field_expression "prVar7->str_tree_storage_idx" identifier -> field_identifier) = number_literal) ;) (expression_statement "prVar7->str_tree = (bin_tree_t *)0x0;" (assignment_expression "prVar7->str_tree = (bin_tree_t *)0x0" (field_expression "prVar7->str_tree" identifier -> field_identifier) = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "free(prVar7->org_indices);" (call_expression "free(prVar7->org_indices)" identifier (argument_list "(prVar7->org_indices)" ( (field_expression "prVar7->org_indices" identifier -> field_identifier) ))) ;) (expression_statement "prVar7->org_indices = (Idx *)0x0;" (assignment_expression "prVar7->org_indices = (Idx *)0x0" (field_expression "prVar7->org_indices" identifier -> field_identifier) = (cast_expression "(Idx *)0x0" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "free(regexp.wcs);" (call_expression "free(regexp.wcs)" identifier (argument_list "(regexp.wcs)" ( (field_expression "regexp.wcs" identifier . field_identifier) ))) ;) (expression_statement "free(regexp.offsets);" (call_expression "free(regexp.offsets)" identifier (argument_list "(regexp.offsets)" ( (field_expression "regexp.offsets" identifier . field_identifier) ))) ;) (if_statement "if (regexp.mbs_allocated != '\0') {\n    free(regexp.mbs);\n  }" if (parenthesized_expression "(regexp.mbs_allocated != '\0')" ( (binary_expression "regexp.mbs_allocated != '\0'" (field_expression "regexp.mbs_allocated" identifier . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    free(regexp.mbs);\n  }" { (expression_statement "free(regexp.mbs);" (call_expression "free(regexp.mbs)" identifier (argument_list "(regexp.mbs)" ( (field_expression "regexp.mbs" identifier . field_identifier) ))) ;) })) (expression_statement "rVar15 = err;" (assignment_expression "rVar15 = err" identifier = identifier) ;) (if_statement "if (err == _REG_NOERROR) goto LAB_000282f4;" if (parenthesized_expression "(err == _REG_NOERROR)" ( (binary_expression "err == _REG_NOERROR" identifier == identifier) )) (goto_statement "goto LAB_000282f4;" goto statement_identifier ;)) (labeled_statement "LAB_000282d8:\n  free_dfa_content(dfa);" statement_identifier : (expression_statement "free_dfa_content(dfa);" (call_expression "free_dfa_content(dfa)" identifier (argument_list "(dfa)" ( identifier ))) ;)) (expression_statement "preg_00->buffer = (re_dfa_t *)0x0;" (assignment_expression "preg_00->buffer = (re_dfa_t *)0x0" (field_expression "preg_00->buffer" identifier -> field_identifier) = (cast_expression "(re_dfa_t *)0x0" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "preg_00->allocated = 0;" (assignment_expression "preg_00->allocated = 0" (field_expression "preg_00->allocated" identifier -> field_identifier) = number_literal) ;) (expression_statement "rVar15 = err;" (assignment_expression "rVar15 = err" identifier = identifier) ;) (labeled_statement "LAB_000282f4:\n  if (iVar4 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (iVar4 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar4 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar4 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return rVar15;" return identifier ;) })))
(translation_unit "int FUN_00027990(uint param_1)\n\n{\n  byte bVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  void *pvVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  void *pvVar9;\n  void *pvVar10;\n  void *pvVar11;\n  int *piVar12;\n  undefined4 *puVar13;\n  wint_t wVar14;\n  __int32_t **pp_Var15;\n  int *__ptr;\n  undefined4 *puVar16;\n  char cVar17;\n  uint extraout_ECX;\n  uint uVar18;\n  int iVar19;\n  int iVar20;\n  int *piVar21;\n  int *piVar22;\n  uint uVar23;\n  int *piVar24;\n  int *piVar25;\n  int iVar26;\n  int iVar27;\n  int *piVar28;\n  size_t __size;\n  int *piVar29;\n  undefined4 *puVar30;\n  uint uVar31;\n  uint uVar32;\n  int unaff_EDI;\n  byte *pbVar33;\n  void **ppvVar34;\n  int in_GS_OFFSET;\n  bool bVar35;\n  bool bVar36;\n  byte bVar37;\n  undefined8 uVar38;\n  int *local_b0;\n  uint local_9c;\n  int local_98;\n  int local_94;\n  int local_88;\n  int local_84;\n  int local_80;\n  int local_7c;\n  void *local_78;\n  void *local_74;\n  void *local_70;\n  void *local_6c;\n  void *local_68;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  int local_4c;\n  uint local_44;\n  int local_34;\n  undefined1 local_2c;\n  byte local_2b;\n  byte local_2a;\n  char local_29;\n  int local_24;\n  int local_20;\n  \n  bVar37 = 0;\n  uVar38 = FUN_0002a2ea();\n  pvVar9 = (void *)((ulonglong)uVar38 >> 0x20);\n  piVar3 = (int *)uVar38;\n  __ptr = (int *)*piVar3;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  *(byte *)(piVar3 + 7) = *(byte *)(piVar3 + 7) & 0x90;\n  local_88 = 0;\n  piVar3[3] = param_1;\n  piVar3[2] = 0;\n  piVar3[6] = 0;\n  if ((uint)piVar3[1] < 0x88) {\n    __ptr = (int *)realloc(__ptr,0x88);\n    if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }\n    piVar3[1] = 0x88;\n    *piVar3 = (int)__ptr;\n  }\n  piVar3[2] = 0x88;\n  *__ptr = 0;\n  __ptr[0x21] = 0;\n  puVar8 = (undefined4 *)((uint)(__ptr + 1) & 0xfffffffc);\n  for (uVar18 = (uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2;\n      uVar18 != 0; uVar18 = uVar18 - 1) {\n    *puVar8 = 0;\n    puVar8 = puVar8 + (uint)bVar37 * -2 + 1;\n  }\n  __ptr[0x10] = 0x1f;\n  if (extraout_ECX < 0xaaaaaaa) {\n    iVar7 = extraout_ECX + 1;\n    __ptr[1] = iVar7;\n    pvVar4 = malloc(iVar7 * 8);\n    *__ptr = (int)pvVar4;\n    if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }\n    pvVar4 = calloc(0xc,uVar18);\n    __ptr[0x11] = iVar19;\n    __ptr[8] = (int)pvVar4;\n    sVar5 = __ctype_get_mb_cur_max();\n    __ptr[0x17] = sVar5;\n    pbVar6 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }\n    bVar1 = *(byte *)(__ptr + 0x16);\n    *(byte *)(__ptr + 0x16) = bVar1 & 0xf7;\n    if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }\n    if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }\n  }\nLAB_000282d0:\n  local_88 = 0xc;\n  goto LAB_000282d8;\ncode_r0x00028148:\n  cVar17 = (char)piVar25[6];\n  piVar24 = (int *)piVar25[1];\n  piVar22 = piVar24;\n  if (cVar17 == '\x11') {\n    iVar19 = piVar25[5];\n    piVar29[1] = (int)piVar24;\n    if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }\n    piVar12[iVar19] = piVar12[piVar29[5]];\n    if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }\njoined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar17 = (char)piVar24[6];\n    piVar22 = (int *)piVar24[1];\n    piVar25 = piVar24;\n  }\n  goto LAB_00028010;\n  while (piVar12[iVar19] == iVar19) {\nLAB_0002806d:\n    iVar19 = iVar19 + 1;\n    if (iVar19 == iVar7) goto LAB_00028074;\n  }\nLAB_0002809c:\n  do {\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  } while (piVar21 != (int *)0x0);\n  iVar7 = 0;\n  piVar21 = (int *)0x0;\n  do {\n    local_80 = 0;\n    if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }\n    piVar22 = (int *)*piVar12;\n    if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }\n    piVar21 = (int *)piVar22[2];\n    if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;\n    iVar7 = piVar22[1];\n    piVar12 = piVar22;\n  } while( true );\nLAB_00028074:\n  free(piVar12);\n  local_b0[0x21] = 0;\n  piVar21 = (int *)local_b0[0xd];\n  goto LAB_0002809c;\nLAB_000281a0:\n  do {\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  } while ((undefined4 *)puVar16[2] != (undefined4 *)0x0);\n  do {\n    if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    puVar8 = (undefined4 *)puVar13[2];\n    bVar35 = puVar16 == puVar8;\n    puVar16 = puVar13;\n  } while (puVar8 == (undefined4 *)0x0 || bVar35);\n  goto LAB_000281a0;\nLAB_00028250:\n  if (cVar17 == '\x10') {\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }\n  else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }\n  while( true ) {\n    cVar17 = *(char *)(puVar16 + 6);\n    puVar30 = puVar16 + 1;\n    puVar13 = puVar16;\n    puVar16 = (undefined4 *)*puVar30;\n    if (cVar17 != '\v') break;\nLAB_00028283:\n    puVar16[4] = puVar13;\n  }\n  goto LAB_00028250;\n  while (puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0) {\n    while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }\n  }\n  bVar36 = false;\n  iVar19 = 0;\n  do {\n    if (local_b0[2] == iVar19) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }\n  } while( true );\ncode_r0x000284f2:\n  iVar19 = iVar19 + 1;\n  if (local_b0[2] == iVar19) {\nLAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    iVar19 = 0;\n    bVar36 = false;\n  }\n  goto LAB_000284dd;\nLAB_00028330:\n  iVar7 = 0xc;\nLAB_00028335:\n  local_b0 = (int *)*piVar3;\n  local_88 = iVar7;\nLAB_00027c60:\n  puVar8 = (undefined4 *)local_b0[0xe];\n  while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }\n  local_b0[0xe] = 0;\n  local_b0[0x10] = 0x1f;\n  local_b0[0xd] = 0;\n  free((void *)local_b0[4]);\n  local_b0[4] = 0;\n  free(local_6c);\n  free(local_68);\n  if (local_29 != '\0') {\n    free(local_70);\n  }\n  goto LAB_000282d8;\nLAB_0002897d:\n  do {\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  } while (uVar18 < uVar31);\nLAB_000289b4:\n  if (*(int *)((int)local_78 + uVar18 * 4) == iVar19) {\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }\n  iVar7 = FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc);\n  if (iVar7 != 0) goto LAB_00028a39;\n  iVar7 = 1;\n  iVar19 = local_7c;\n  if (local_7c < 2) goto LAB_000289f2;\n  goto LAB_00028917;\nLAB_0002875b:\n  while( true ) {\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }\n  if (uVar23 != 0) {\n    local_9c = 0;\n    local_b0 = (int *)local_b0[6];\n    do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);\n  }\nLAB_00028860:\n  local_88 = 0;\n  if (((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0)) {\n    if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    \n        abort();\n      }\n                    \n                    \n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }\n    __ptr[0x17] = 1;\n    *(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;\n  }\n  iVar7 = *(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c);\n  __ptr[0x12] = iVar7;\n  iVar7 = __ptr[6] + iVar7 * 0xc;\n  iVar19 = *(int *)(iVar7 + 4);\n  if (iVar19 < 1) {\n    local_80 = 0;\n    local_7c = 0;\n    local_78 = (void *)0x0;\n    local_84 = 0;\nLAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);\n    __ptr[9] = iVar19;\n    iVar7 = local_84;\n    if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }\n  }\n  else {\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }\nLAB_00028a39:\n  iVar19 = *piVar3;\n  puVar8 = *(undefined4 **)(iVar19 + 0x38);\n  local_88 = iVar7;\n  while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }\n  *(undefined4 *)(iVar19 + 0x38) = 0;\n  *(undefined4 *)(iVar19 + 0x40) = 0x1f;\n  *(undefined4 *)(iVar19 + 0x34) = 0;\n  free(*(void **)(iVar19 + 0x10));\n  *(undefined4 *)(iVar19 + 0x10) = 0;\n  free(local_6c);\n  free(local_68);\n  if (local_29 != '\0') {\n    free(local_70);\n  }\n  iVar7 = local_88;\n  if (local_88 == 0) goto LAB_000282f4;\nLAB_000282d8:\n  FUN_0001c000();\n  *piVar3 = 0;\n  piVar3[1] = 0;\n  iVar7 = local_88;\nLAB_000282f4:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002a720();\n  }\n  return iVar7;\n}\n\n" (function_definition "int FUN_00027990(uint param_1)\n\n{\n  byte bVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  void *pvVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  void *pvVar9;\n  void *pvVar10;\n  void *pvVar11;\n  int *piVar12;\n  undefined4 *puVar13;\n  wint_t wVar14;\n  __int32_t **pp_Var15;\n  int *__ptr;\n  undefined4 *puVar16;\n  char cVar17;\n  uint extraout_ECX;\n  uint uVar18;\n  int iVar19;\n  int iVar20;\n  int *piVar21;\n  int *piVar22;\n  uint uVar23;\n  int *piVar24;\n  int *piVar25;\n  int iVar26;\n  int iVar27;\n  int *piVar28;\n  size_t __size;\n  int *piVar29;\n  undefined4 *puVar30;\n  uint uVar31;\n  uint uVar32;\n  int unaff_EDI;\n  byte *pbVar33;\n  void **ppvVar34;\n  int in_GS_OFFSET;\n  bool bVar35;\n  bool bVar36;\n  byte bVar37;\n  undefined8 uVar38;\n  int *local_b0;\n  uint local_9c;\n  int local_98;\n  int local_94;\n  int local_88;\n  int local_84;\n  int local_80;\n  int local_7c;\n  void *local_78;\n  void *local_74;\n  void *local_70;\n  void *local_6c;\n  void *local_68;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  int local_4c;\n  uint local_44;\n  int local_34;\n  undefined1 local_2c;\n  byte local_2b;\n  byte local_2a;\n  char local_29;\n  int local_24;\n  int local_20;\n  \n  bVar37 = 0;\n  uVar38 = FUN_0002a2ea();\n  pvVar9 = (void *)((ulonglong)uVar38 >> 0x20);\n  piVar3 = (int *)uVar38;\n  __ptr = (int *)*piVar3;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  *(byte *)(piVar3 + 7) = *(byte *)(piVar3 + 7) & 0x90;\n  local_88 = 0;\n  piVar3[3] = param_1;\n  piVar3[2] = 0;\n  piVar3[6] = 0;\n  if ((uint)piVar3[1] < 0x88) {\n    __ptr = (int *)realloc(__ptr,0x88);\n    if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }\n    piVar3[1] = 0x88;\n    *piVar3 = (int)__ptr;\n  }\n  piVar3[2] = 0x88;\n  *__ptr = 0;\n  __ptr[0x21] = 0;\n  puVar8 = (undefined4 *)((uint)(__ptr + 1) & 0xfffffffc);\n  for (uVar18 = (uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2;\n      uVar18 != 0; uVar18 = uVar18 - 1) {\n    *puVar8 = 0;\n    puVar8 = puVar8 + (uint)bVar37 * -2 + 1;\n  }\n  __ptr[0x10] = 0x1f;\n  if (extraout_ECX < 0xaaaaaaa) {\n    iVar7 = extraout_ECX + 1;\n    __ptr[1] = iVar7;\n    pvVar4 = malloc(iVar7 * 8);\n    *__ptr = (int)pvVar4;\n    if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }\n    pvVar4 = calloc(0xc,uVar18);\n    __ptr[0x11] = iVar19;\n    __ptr[8] = (int)pvVar4;\n    sVar5 = __ctype_get_mb_cur_max();\n    __ptr[0x17] = sVar5;\n    pbVar6 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }\n    bVar1 = *(byte *)(__ptr + 0x16);\n    *(byte *)(__ptr + 0x16) = bVar1 & 0xf7;\n    if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }\n    if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }\n  }\nLAB_000282d0:\n  local_88 = 0xc;\n  goto LAB_000282d8;\ncode_r0x00028148:\n  cVar17 = (char)piVar25[6];\n  piVar24 = (int *)piVar25[1];\n  piVar22 = piVar24;\n  if (cVar17 == '\x11') {\n    iVar19 = piVar25[5];\n    piVar29[1] = (int)piVar24;\n    if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }\n    piVar12[iVar19] = piVar12[piVar29[5]];\n    if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }\njoined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar17 = (char)piVar24[6];\n    piVar22 = (int *)piVar24[1];\n    piVar25 = piVar24;\n  }\n  goto LAB_00028010;\n  while (piVar12[iVar19] == iVar19) {\nLAB_0002806d:\n    iVar19 = iVar19 + 1;\n    if (iVar19 == iVar7) goto LAB_00028074;\n  }\nLAB_0002809c:\n  do {\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  } while (piVar21 != (int *)0x0);\n  iVar7 = 0;\n  piVar21 = (int *)0x0;\n  do {\n    local_80 = 0;\n    if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }\n    piVar22 = (int *)*piVar12;\n    if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }\n    piVar21 = (int *)piVar22[2];\n    if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;\n    iVar7 = piVar22[1];\n    piVar12 = piVar22;\n  } while( true );\nLAB_00028074:\n  free(piVar12);\n  local_b0[0x21] = 0;\n  piVar21 = (int *)local_b0[0xd];\n  goto LAB_0002809c;\nLAB_000281a0:\n  do {\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  } while ((undefined4 *)puVar16[2] != (undefined4 *)0x0);\n  do {\n    if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    puVar8 = (undefined4 *)puVar13[2];\n    bVar35 = puVar16 == puVar8;\n    puVar16 = puVar13;\n  } while (puVar8 == (undefined4 *)0x0 || bVar35);\n  goto LAB_000281a0;\nLAB_00028250:\n  if (cVar17 == '\x10') {\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }\n  else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }\n  while( true ) {\n    cVar17 = *(char *)(puVar16 + 6);\n    puVar30 = puVar16 + 1;\n    puVar13 = puVar16;\n    puVar16 = (undefined4 *)*puVar30;\n    if (cVar17 != '\v') break;\nLAB_00028283:\n    puVar16[4] = puVar13;\n  }\n  goto LAB_00028250;\n  while (puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0) {\n    while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }\n  }\n  bVar36 = false;\n  iVar19 = 0;\n  do {\n    if (local_b0[2] == iVar19) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }\n  } while( true );\ncode_r0x000284f2:\n  iVar19 = iVar19 + 1;\n  if (local_b0[2] == iVar19) {\nLAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    iVar19 = 0;\n    bVar36 = false;\n  }\n  goto LAB_000284dd;\nLAB_00028330:\n  iVar7 = 0xc;\nLAB_00028335:\n  local_b0 = (int *)*piVar3;\n  local_88 = iVar7;\nLAB_00027c60:\n  puVar8 = (undefined4 *)local_b0[0xe];\n  while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }\n  local_b0[0xe] = 0;\n  local_b0[0x10] = 0x1f;\n  local_b0[0xd] = 0;\n  free((void *)local_b0[4]);\n  local_b0[4] = 0;\n  free(local_6c);\n  free(local_68);\n  if (local_29 != '\0') {\n    free(local_70);\n  }\n  goto LAB_000282d8;\nLAB_0002897d:\n  do {\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  } while (uVar18 < uVar31);\nLAB_000289b4:\n  if (*(int *)((int)local_78 + uVar18 * 4) == iVar19) {\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }\n  iVar7 = FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc);\n  if (iVar7 != 0) goto LAB_00028a39;\n  iVar7 = 1;\n  iVar19 = local_7c;\n  if (local_7c < 2) goto LAB_000289f2;\n  goto LAB_00028917;\nLAB_0002875b:\n  while( true ) {\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }\n  if (uVar23 != 0) {\n    local_9c = 0;\n    local_b0 = (int *)local_b0[6];\n    do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);\n  }\nLAB_00028860:\n  local_88 = 0;\n  if (((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0)) {\n    if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    \n        abort();\n      }\n                    \n                    \n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }\n    __ptr[0x17] = 1;\n    *(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;\n  }\n  iVar7 = *(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c);\n  __ptr[0x12] = iVar7;\n  iVar7 = __ptr[6] + iVar7 * 0xc;\n  iVar19 = *(int *)(iVar7 + 4);\n  if (iVar19 < 1) {\n    local_80 = 0;\n    local_7c = 0;\n    local_78 = (void *)0x0;\n    local_84 = 0;\nLAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);\n    __ptr[9] = iVar19;\n    iVar7 = local_84;\n    if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }\n  }\n  else {\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }\nLAB_00028a39:\n  iVar19 = *piVar3;\n  puVar8 = *(undefined4 **)(iVar19 + 0x38);\n  local_88 = iVar7;\n  while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }\n  *(undefined4 *)(iVar19 + 0x38) = 0;\n  *(undefined4 *)(iVar19 + 0x40) = 0x1f;\n  *(undefined4 *)(iVar19 + 0x34) = 0;\n  free(*(void **)(iVar19 + 0x10));\n  *(undefined4 *)(iVar19 + 0x10) = 0;\n  free(local_6c);\n  free(local_68);\n  if (local_29 != '\0') {\n    free(local_70);\n  }\n  iVar7 = local_88;\n  if (local_88 == 0) goto LAB_000282f4;\nLAB_000282d8:\n  FUN_0001c000();\n  *piVar3 = 0;\n  piVar3[1] = 0;\n  iVar7 = local_88;\nLAB_000282f4:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002a720();\n  }\n  return iVar7;\n}" primitive_type (function_declarator "FUN_00027990(uint param_1)" identifier (parameter_list "(uint param_1)" ( (parameter_declaration "uint param_1" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  void *pvVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  void *pvVar9;\n  void *pvVar10;\n  void *pvVar11;\n  int *piVar12;\n  undefined4 *puVar13;\n  wint_t wVar14;\n  __int32_t **pp_Var15;\n  int *__ptr;\n  undefined4 *puVar16;\n  char cVar17;\n  uint extraout_ECX;\n  uint uVar18;\n  int iVar19;\n  int iVar20;\n  int *piVar21;\n  int *piVar22;\n  uint uVar23;\n  int *piVar24;\n  int *piVar25;\n  int iVar26;\n  int iVar27;\n  int *piVar28;\n  size_t __size;\n  int *piVar29;\n  undefined4 *puVar30;\n  uint uVar31;\n  uint uVar32;\n  int unaff_EDI;\n  byte *pbVar33;\n  void **ppvVar34;\n  int in_GS_OFFSET;\n  bool bVar35;\n  bool bVar36;\n  byte bVar37;\n  undefined8 uVar38;\n  int *local_b0;\n  uint local_9c;\n  int local_98;\n  int local_94;\n  int local_88;\n  int local_84;\n  int local_80;\n  int local_7c;\n  void *local_78;\n  void *local_74;\n  void *local_70;\n  void *local_6c;\n  void *local_68;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  int local_4c;\n  uint local_44;\n  int local_34;\n  undefined1 local_2c;\n  byte local_2b;\n  byte local_2a;\n  char local_29;\n  int local_24;\n  int local_20;\n  \n  bVar37 = 0;\n  uVar38 = FUN_0002a2ea();\n  pvVar9 = (void *)((ulonglong)uVar38 >> 0x20);\n  piVar3 = (int *)uVar38;\n  __ptr = (int *)*piVar3;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  *(byte *)(piVar3 + 7) = *(byte *)(piVar3 + 7) & 0x90;\n  local_88 = 0;\n  piVar3[3] = param_1;\n  piVar3[2] = 0;\n  piVar3[6] = 0;\n  if ((uint)piVar3[1] < 0x88) {\n    __ptr = (int *)realloc(__ptr,0x88);\n    if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }\n    piVar3[1] = 0x88;\n    *piVar3 = (int)__ptr;\n  }\n  piVar3[2] = 0x88;\n  *__ptr = 0;\n  __ptr[0x21] = 0;\n  puVar8 = (undefined4 *)((uint)(__ptr + 1) & 0xfffffffc);\n  for (uVar18 = (uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2;\n      uVar18 != 0; uVar18 = uVar18 - 1) {\n    *puVar8 = 0;\n    puVar8 = puVar8 + (uint)bVar37 * -2 + 1;\n  }\n  __ptr[0x10] = 0x1f;\n  if (extraout_ECX < 0xaaaaaaa) {\n    iVar7 = extraout_ECX + 1;\n    __ptr[1] = iVar7;\n    pvVar4 = malloc(iVar7 * 8);\n    *__ptr = (int)pvVar4;\n    if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }\n    pvVar4 = calloc(0xc,uVar18);\n    __ptr[0x11] = iVar19;\n    __ptr[8] = (int)pvVar4;\n    sVar5 = __ctype_get_mb_cur_max();\n    __ptr[0x17] = sVar5;\n    pbVar6 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }\n    bVar1 = *(byte *)(__ptr + 0x16);\n    *(byte *)(__ptr + 0x16) = bVar1 & 0xf7;\n    if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }\n    if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }\n  }\nLAB_000282d0:\n  local_88 = 0xc;\n  goto LAB_000282d8;\ncode_r0x00028148:\n  cVar17 = (char)piVar25[6];\n  piVar24 = (int *)piVar25[1];\n  piVar22 = piVar24;\n  if (cVar17 == '\x11') {\n    iVar19 = piVar25[5];\n    piVar29[1] = (int)piVar24;\n    if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }\n    piVar12[iVar19] = piVar12[piVar29[5]];\n    if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }\njoined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar17 = (char)piVar24[6];\n    piVar22 = (int *)piVar24[1];\n    piVar25 = piVar24;\n  }\n  goto LAB_00028010;\n  while (piVar12[iVar19] == iVar19) {\nLAB_0002806d:\n    iVar19 = iVar19 + 1;\n    if (iVar19 == iVar7) goto LAB_00028074;\n  }\nLAB_0002809c:\n  do {\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  } while (piVar21 != (int *)0x0);\n  iVar7 = 0;\n  piVar21 = (int *)0x0;\n  do {\n    local_80 = 0;\n    if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }\n    piVar22 = (int *)*piVar12;\n    if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }\n    piVar21 = (int *)piVar22[2];\n    if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;\n    iVar7 = piVar22[1];\n    piVar12 = piVar22;\n  } while( true );\nLAB_00028074:\n  free(piVar12);\n  local_b0[0x21] = 0;\n  piVar21 = (int *)local_b0[0xd];\n  goto LAB_0002809c;\nLAB_000281a0:\n  do {\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  } while ((undefined4 *)puVar16[2] != (undefined4 *)0x0);\n  do {\n    if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    puVar8 = (undefined4 *)puVar13[2];\n    bVar35 = puVar16 == puVar8;\n    puVar16 = puVar13;\n  } while (puVar8 == (undefined4 *)0x0 || bVar35);\n  goto LAB_000281a0;\nLAB_00028250:\n  if (cVar17 == '\x10') {\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }\n  else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }\n  while( true ) {\n    cVar17 = *(char *)(puVar16 + 6);\n    puVar30 = puVar16 + 1;\n    puVar13 = puVar16;\n    puVar16 = (undefined4 *)*puVar30;\n    if (cVar17 != '\v') break;\nLAB_00028283:\n    puVar16[4] = puVar13;\n  }\n  goto LAB_00028250;\n  while (puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0) {\n    while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }\n  }\n  bVar36 = false;\n  iVar19 = 0;\n  do {\n    if (local_b0[2] == iVar19) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }\n  } while( true );\ncode_r0x000284f2:\n  iVar19 = iVar19 + 1;\n  if (local_b0[2] == iVar19) {\nLAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    iVar19 = 0;\n    bVar36 = false;\n  }\n  goto LAB_000284dd;\nLAB_00028330:\n  iVar7 = 0xc;\nLAB_00028335:\n  local_b0 = (int *)*piVar3;\n  local_88 = iVar7;\nLAB_00027c60:\n  puVar8 = (undefined4 *)local_b0[0xe];\n  while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }\n  local_b0[0xe] = 0;\n  local_b0[0x10] = 0x1f;\n  local_b0[0xd] = 0;\n  free((void *)local_b0[4]);\n  local_b0[4] = 0;\n  free(local_6c);\n  free(local_68);\n  if (local_29 != '\0') {\n    free(local_70);\n  }\n  goto LAB_000282d8;\nLAB_0002897d:\n  do {\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  } while (uVar18 < uVar31);\nLAB_000289b4:\n  if (*(int *)((int)local_78 + uVar18 * 4) == iVar19) {\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }\n  iVar7 = FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc);\n  if (iVar7 != 0) goto LAB_00028a39;\n  iVar7 = 1;\n  iVar19 = local_7c;\n  if (local_7c < 2) goto LAB_000289f2;\n  goto LAB_00028917;\nLAB_0002875b:\n  while( true ) {\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }\n  if (uVar23 != 0) {\n    local_9c = 0;\n    local_b0 = (int *)local_b0[6];\n    do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);\n  }\nLAB_00028860:\n  local_88 = 0;\n  if (((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0)) {\n    if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    \n        abort();\n      }\n                    \n                    \n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }\n    __ptr[0x17] = 1;\n    *(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;\n  }\n  iVar7 = *(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c);\n  __ptr[0x12] = iVar7;\n  iVar7 = __ptr[6] + iVar7 * 0xc;\n  iVar19 = *(int *)(iVar7 + 4);\n  if (iVar19 < 1) {\n    local_80 = 0;\n    local_7c = 0;\n    local_78 = (void *)0x0;\n    local_84 = 0;\nLAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);\n    __ptr[9] = iVar19;\n    iVar7 = local_84;\n    if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }\n  }\n  else {\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }\nLAB_00028a39:\n  iVar19 = *piVar3;\n  puVar8 = *(undefined4 **)(iVar19 + 0x38);\n  local_88 = iVar7;\n  while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }\n  *(undefined4 *)(iVar19 + 0x38) = 0;\n  *(undefined4 *)(iVar19 + 0x40) = 0x1f;\n  *(undefined4 *)(iVar19 + 0x34) = 0;\n  free(*(void **)(iVar19 + 0x10));\n  *(undefined4 *)(iVar19 + 0x10) = 0;\n  free(local_6c);\n  free(local_68);\n  if (local_29 != '\0') {\n    free(local_70);\n  }\n  iVar7 = local_88;\n  if (local_88 == 0) goto LAB_000282f4;\nLAB_000282d8:\n  FUN_0001c000();\n  *piVar3 = 0;\n  piVar3[1] = 0;\n  iVar7 = local_88;\nLAB_000282f4:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002a720();\n  }\n  return iVar7;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "void *pvVar4;" primitive_type (pointer_declarator "*pvVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "void *pvVar9;" primitive_type (pointer_declarator "*pvVar9" * identifier) ;) (declaration "void *pvVar10;" primitive_type (pointer_declarator "*pvVar10" * identifier) ;) (declaration "void *pvVar11;" primitive_type (pointer_declarator "*pvVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "wint_t wVar14;" type_identifier identifier ;) (declaration "__int32_t **pp_Var15;" type_identifier (pointer_declarator "**pp_Var15" * (pointer_declarator "*pp_Var15" * identifier)) ;) (declaration "int *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined4 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "char cVar17;" primitive_type identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int *piVar21;" primitive_type (pointer_declarator "*piVar21" * identifier) ;) (declaration "int *piVar22;" primitive_type (pointer_declarator "*piVar22" * identifier) ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int *piVar24;" primitive_type (pointer_declarator "*piVar24" * identifier) ;) (declaration "int *piVar25;" primitive_type (pointer_declarator "*piVar25" * identifier) ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "int *piVar28;" primitive_type (pointer_declarator "*piVar28" * identifier) ;) (declaration "size_t __size;" primitive_type identifier ;) (declaration "int *piVar29;" primitive_type (pointer_declarator "*piVar29" * identifier) ;) (declaration "undefined4 *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "uint uVar31;" type_identifier identifier ;) (declaration "uint uVar32;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "byte *pbVar33;" type_identifier (pointer_declarator "*pbVar33" * identifier) ;) (declaration "void **ppvVar34;" primitive_type (pointer_declarator "**ppvVar34" * (pointer_declarator "*ppvVar34" * identifier)) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar35;" primitive_type identifier ;) (declaration "bool bVar36;" primitive_type identifier ;) (declaration "byte bVar37;" type_identifier identifier ;) (declaration "undefined8 uVar38;" type_identifier identifier ;) (declaration "int *local_b0;" primitive_type (pointer_declarator "*local_b0" * identifier) ;) (declaration "uint local_9c;" type_identifier identifier ;) (declaration "int local_98;" primitive_type identifier ;) (declaration "int local_94;" primitive_type identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "void *local_78;" primitive_type (pointer_declarator "*local_78" * identifier) ;) (declaration "void *local_74;" primitive_type (pointer_declarator "*local_74" * identifier) ;) (declaration "void *local_70;" primitive_type (pointer_declarator "*local_70" * identifier) ;) (declaration "void *local_6c;" primitive_type (pointer_declarator "*local_6c" * identifier) ;) (declaration "void *local_68;" primitive_type (pointer_declarator "*local_68" * identifier) ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "undefined1 local_2c;" type_identifier identifier ;) (declaration "byte local_2b;" type_identifier identifier ;) (declaration "byte local_2a;" type_identifier identifier ;) (declaration "char local_29;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "bVar37 = 0;" (assignment_expression "bVar37 = 0" identifier = number_literal) ;) (expression_statement "uVar38 = FUN_0002a2ea();" (assignment_expression "uVar38 = FUN_0002a2ea()" identifier = (call_expression "FUN_0002a2ea()" identifier (argument_list "()" ( )))) ;) (expression_statement "pvVar9 = (void *)((ulonglong)uVar38 >> 0x20);" (assignment_expression "pvVar9 = (void *)((ulonglong)uVar38 >> 0x20)" identifier = (cast_expression "(void *)((ulonglong)uVar38 >> 0x20)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar38 >> 0x20)" ( (binary_expression "(ulonglong)uVar38 >> 0x20" (cast_expression "(ulonglong)uVar38" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar3 = (int *)uVar38;" (assignment_expression "piVar3 = (int *)uVar38" identifier = (cast_expression "(int *)uVar38" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "__ptr = (int *)*piVar3;" (assignment_expression "__ptr = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(byte *)(piVar3 + 7) = *(byte *)(piVar3 + 7) & 0x90;" (assignment_expression "*(byte *)(piVar3 + 7) = *(byte *)(piVar3 + 7) & 0x90" (pointer_expression "*(byte *)(piVar3 + 7)" * (cast_expression "(byte *)(piVar3 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 7)" ( (binary_expression "piVar3 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(piVar3 + 7) & 0x90" (pointer_expression "*(byte *)(piVar3 + 7)" * (cast_expression "(byte *)(piVar3 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 7)" ( (binary_expression "piVar3 + 7" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (expression_statement "piVar3[3] = param_1;" (assignment_expression "piVar3[3] = param_1" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar3[2] = 0;" (assignment_expression "piVar3[2] = 0" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar3[6] = 0;" (assignment_expression "piVar3[6] = 0" (subscript_expression "piVar3[6]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((uint)piVar3[1] < 0x88) {\n    __ptr = (int *)realloc(__ptr,0x88);\n    if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }\n    piVar3[1] = 0x88;\n    *piVar3 = (int)__ptr;\n  }" if (parenthesized_expression "((uint)piVar3[1] < 0x88)" ( (binary_expression "(uint)piVar3[1] < 0x88" (cast_expression "(uint)piVar3[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar3[1]" identifier [ number_literal ])) < number_literal) )) (compound_statement "{\n    __ptr = (int *)realloc(__ptr,0x88);\n    if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }\n    piVar3[1] = 0x88;\n    *piVar3 = (int)__ptr;\n  }" { (expression_statement "__ptr = (int *)realloc(__ptr,0x88);" (assignment_expression "__ptr = (int *)realloc(__ptr,0x88)" identifier = (cast_expression "(int *)realloc(__ptr,0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "realloc(__ptr,0x88)" identifier (argument_list "(__ptr,0x88)" ( identifier , number_literal ))))) ;) (if_statement "if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }" if (parenthesized_expression "(__ptr == (int *)0x0)" ( (binary_expression "__ptr == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }" { (expression_statement "iVar7 = 0xc;" (assignment_expression "iVar7 = 0xc" identifier = number_literal) ;) (goto_statement "goto LAB_000282f4;" goto statement_identifier ;) })) (expression_statement "piVar3[1] = 0x88;" (assignment_expression "piVar3[1] = 0x88" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*piVar3 = (int)__ptr;" (assignment_expression "*piVar3 = (int)__ptr" (pointer_expression "*piVar3" * identifier) = (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "piVar3[2] = 0x88;" (assignment_expression "piVar3[2] = 0x88" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*__ptr = 0;" (assignment_expression "*__ptr = 0" (pointer_expression "*__ptr" * identifier) = number_literal) ;) (expression_statement "__ptr[0x21] = 0;" (assignment_expression "__ptr[0x21] = 0" (subscript_expression "__ptr[0x21]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8 = (undefined4 *)((uint)(__ptr + 1) & 0xfffffffc);" (assignment_expression "puVar8 = (undefined4 *)((uint)(__ptr + 1) & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)((uint)(__ptr + 1) & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(__ptr + 1) & 0xfffffffc)" ( (binary_expression "(uint)(__ptr + 1) & 0xfffffffc" (call_expression "(uint)(__ptr + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(__ptr + 1)" ( (binary_expression "__ptr + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar18 = (uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2;\n      uVar18 != 0; uVar18 = uVar18 - 1) {\n    *puVar8 = 0;\n    puVar8 = puVar8 + (uint)bVar37 * -2 + 1;\n  }" for ( (assignment_expression "uVar18 = (uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2" identifier = (binary_expression "(uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc)))" ( (binary_expression "(int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))" (cast_expression "(int)__ptr" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))" ( (binary_expression "0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc)" number_literal - (cast_expression "(int)((uint)(__ptr + 1) & 0xfffffffc)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(__ptr + 1) & 0xfffffffc)" ( (binary_expression "(uint)(__ptr + 1) & 0xfffffffc" (call_expression "(uint)(__ptr + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(__ptr + 1)" ( (binary_expression "__ptr + 1" identifier + number_literal) ))) & number_literal) )))) ))) ))) >> number_literal)) ; (binary_expression "uVar18 != 0" identifier != number_literal) ; (assignment_expression "uVar18 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ) (compound_statement "{\n    *puVar8 = 0;\n    puVar8 = puVar8 + (uint)bVar37 * -2 + 1;\n  }" { (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (expression_statement "puVar8 = puVar8 + (uint)bVar37 * -2 + 1;" (assignment_expression "puVar8 = puVar8 + (uint)bVar37 * -2 + 1" identifier = (binary_expression "puVar8 + (uint)bVar37 * -2 + 1" (binary_expression "puVar8 + (uint)bVar37 * -2" identifier + (binary_expression "(uint)bVar37 * -2" (cast_expression "(uint)bVar37" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "__ptr[0x10] = 0x1f;" (assignment_expression "__ptr[0x10] = 0x1f" (subscript_expression "__ptr[0x10]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (extraout_ECX < 0xaaaaaaa) {\n    iVar7 = extraout_ECX + 1;\n    __ptr[1] = iVar7;\n    pvVar4 = malloc(iVar7 * 8);\n    *__ptr = (int)pvVar4;\n    if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }\n    pvVar4 = calloc(0xc,uVar18);\n    __ptr[0x11] = iVar19;\n    __ptr[8] = (int)pvVar4;\n    sVar5 = __ctype_get_mb_cur_max();\n    __ptr[0x17] = sVar5;\n    pbVar6 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }\n    bVar1 = *(byte *)(__ptr + 0x16);\n    *(byte *)(__ptr + 0x16) = bVar1 & 0xf7;\n    if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }\n    if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }\n  }" if (parenthesized_expression "(extraout_ECX < 0xaaaaaaa)" ( (binary_expression "extraout_ECX < 0xaaaaaaa" identifier < number_literal) )) (compound_statement "{\n    iVar7 = extraout_ECX + 1;\n    __ptr[1] = iVar7;\n    pvVar4 = malloc(iVar7 * 8);\n    *__ptr = (int)pvVar4;\n    if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }\n    pvVar4 = calloc(0xc,uVar18);\n    __ptr[0x11] = iVar19;\n    __ptr[8] = (int)pvVar4;\n    sVar5 = __ctype_get_mb_cur_max();\n    __ptr[0x17] = sVar5;\n    pbVar6 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }\n    bVar1 = *(byte *)(__ptr + 0x16);\n    *(byte *)(__ptr + 0x16) = bVar1 & 0xf7;\n    if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }\n    if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }\n  }" { (expression_statement "iVar7 = extraout_ECX + 1;" (assignment_expression "iVar7 = extraout_ECX + 1" identifier = (binary_expression "extraout_ECX + 1" identifier + number_literal)) ;) (expression_statement "__ptr[1] = iVar7;" (assignment_expression "__ptr[1] = iVar7" (subscript_expression "__ptr[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pvVar4 = malloc(iVar7 * 8);" (assignment_expression "pvVar4 = malloc(iVar7 * 8)" identifier = (call_expression "malloc(iVar7 * 8)" identifier (argument_list "(iVar7 * 8)" ( (binary_expression "iVar7 * 8" identifier * number_literal) )))) ;) (expression_statement "*__ptr = (int)pvVar4;" (assignment_expression "*__ptr = (int)pvVar4" (pointer_expression "*__ptr" * identifier) = (cast_expression "(int)pvVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }" if (parenthesized_expression "(extraout_ECX == 0)" ( (binary_expression "extraout_ECX == 0" identifier == number_literal) )) (compound_statement "{\n      iVar19 = 0;\n      uVar18 = 1;\n    }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }" else (compound_statement "{\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }" { (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" identifier = number_literal) ;) (do_statement "do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);" do (compound_statement "{\n        uVar18 = uVar18 * 2;\n      }" { (expression_statement "uVar18 = uVar18 * 2;" (assignment_expression "uVar18 = uVar18 * 2" identifier = (binary_expression "uVar18 * 2" identifier * number_literal)) ;) }) while (parenthesized_expression "(uVar18 <= extraout_ECX)" ( (binary_expression "uVar18 <= extraout_ECX" identifier <= identifier) )) ;) (expression_statement "iVar19 = uVar18 - 1;" (assignment_expression "iVar19 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) }))) (expression_statement "pvVar4 = calloc(0xc,uVar18);" (assignment_expression "pvVar4 = calloc(0xc,uVar18)" identifier = (call_expression "calloc(0xc,uVar18)" identifier (argument_list "(0xc,uVar18)" ( number_literal , identifier )))) ;) (expression_statement "__ptr[0x11] = iVar19;" (assignment_expression "__ptr[0x11] = iVar19" (subscript_expression "__ptr[0x11]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__ptr[8] = (int)pvVar4;" (assignment_expression "__ptr[8] = (int)pvVar4" (subscript_expression "__ptr[8]" identifier [ number_literal ]) = (cast_expression "(int)pvVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "sVar5 = __ctype_get_mb_cur_max();" (assignment_expression "sVar5 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;) (expression_statement "__ptr[0x17] = sVar5;" (assignment_expression "__ptr[0x17] = sVar5" (subscript_expression "__ptr[0x17]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pbVar6 = (byte *)nl_langinfo(0xe);" (assignment_expression "pbVar6 = (byte *)nl_langinfo(0xe)" identifier = (cast_expression "(byte *)nl_langinfo(0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "nl_langinfo(0xe)" identifier (argument_list "(0xe)" ( number_literal ))))) ;) (if_statement "if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }" if (parenthesized_expression "((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       )" ( (binary_expression "(((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)" (parenthesized_expression "(((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54))" ( (binary_expression "((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)" (parenthesized_expression "((*pbVar6 & 0xdf) == 0x55)" ( (binary_expression "(*pbVar6 & 0xdf) == 0x55" (parenthesized_expression "(*pbVar6 & 0xdf)" ( (binary_expression "*pbVar6 & 0xdf" (pointer_expression "*pbVar6" * identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "((pbVar6[1] & 0xdf) == 0x54)" ( (binary_expression "(pbVar6[1] & 0xdf) == 0x54" (parenthesized_expression "(pbVar6[1] & 0xdf)" ( (binary_expression "pbVar6[1] & 0xdf" (subscript_expression "pbVar6[1]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((pbVar6[2] & 0xdf) == 0x46)" ( (binary_expression "(pbVar6[2] & 0xdf) == 0x46" (parenthesized_expression "(pbVar6[2] & 0xdf)" ( (binary_expression "pbVar6[2] & 0xdf" (subscript_expression "pbVar6[2]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }" { (expression_statement "bVar35 = pbVar6[3] < 0x2d;" (assignment_expression "bVar35 = pbVar6[3] < 0x2d" identifier = (binary_expression "pbVar6[3] < 0x2d" (subscript_expression "pbVar6[3]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar36 = pbVar6[3] == 0x2d;" (assignment_expression "bVar36 = pbVar6[3] == 0x2d" identifier = (binary_expression "pbVar6[3] == 0x2d" (subscript_expression "pbVar6[3]" identifier [ number_literal ]) == number_literal)) ;) (expression_statement "iVar19 = 2;" (assignment_expression "iVar19 = 2" identifier = number_literal) ;) (expression_statement "pbVar6 = pbVar6 + bVar36 + 3;" (assignment_expression "pbVar6 = pbVar6 + bVar36 + 3" identifier = (binary_expression "pbVar6 + bVar36 + 3" (binary_expression "pbVar6 + bVar36" identifier + identifier) + number_literal)) ;) (expression_statement "pbVar33 = (byte *)(unaff_EDI + 0x504b);" (assignment_expression "pbVar33 = (byte *)(unaff_EDI + 0x504b)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x504b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x504b)" ( (binary_expression "unaff_EDI + 0x504b" identifier + number_literal) )))) ;) (do_statement "do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);" do (compound_statement "{\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      }" { (if_statement "if (iVar19 == 0) break;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar19 = iVar19 + -1;" (assignment_expression "iVar19 = iVar19 + -1" identifier = (binary_expression "iVar19 + -1" identifier + number_literal)) ;) (expression_statement "bVar35 = *pbVar6 < *pbVar33;" (assignment_expression "bVar35 = *pbVar6 < *pbVar33" identifier = (binary_expression "*pbVar6 < *pbVar33" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar33" * identifier))) ;) (expression_statement "bVar36 = *pbVar6 == *pbVar33;" (assignment_expression "bVar36 = *pbVar6 == *pbVar33" identifier = (binary_expression "*pbVar6 == *pbVar33" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar33" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1" identifier = (binary_expression "pbVar6 + (uint)bVar37 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar37 * -2" identifier + (binary_expression "(uint)bVar37 * -2" (cast_expression "(uint)bVar37" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;" (assignment_expression "pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1" identifier = (binary_expression "pbVar33 + (uint)bVar37 * -2 + 1" (binary_expression "pbVar33 + (uint)bVar37 * -2" identifier + (binary_expression "(uint)bVar37 * -2" (cast_expression "(uint)bVar37" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar36)" ( identifier )) ;) (if_statement "if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }" if (parenthesized_expression "((!bVar35 && !bVar36) == bVar35)" ( (binary_expression "(!bVar35 && !bVar36) == bVar35" (parenthesized_expression "(!bVar35 && !bVar36)" ( (binary_expression "!bVar35 && !bVar36" (unary_expression "!bVar35" ! identifier) && (unary_expression "!bVar36" ! identifier)) )) == identifier) )) (compound_statement "{\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }" { (expression_statement "*(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;" (assignment_expression "*(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) = (binary_expression "*(byte *)(__ptr + 0x16) | 4" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) | number_literal)) ;) })) })) (expression_statement "bVar1 = *(byte *)(__ptr + 0x16);" (assignment_expression "bVar1 = *(byte *)(__ptr + 0x16)" identifier = (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) ))))) ;) (expression_statement "*(byte *)(__ptr + 0x16) = bVar1 & 0xf7;" (assignment_expression "*(byte *)(__ptr + 0x16) = bVar1 & 0xf7" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) = (binary_expression "bVar1 & 0xf7" identifier & number_literal)) ;) (if_statement "if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }" if (parenthesized_expression "(1 < __ptr[0x17])" ( (binary_expression "1 < __ptr[0x17]" number_literal < (subscript_expression "__ptr[0x17]" identifier [ number_literal ])) )) (compound_statement "{\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }" { (if_statement "if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }" if (parenthesized_expression "((bVar1 & 4) == 0)" ( (binary_expression "(bVar1 & 4) == 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }" { (expression_statement "pvVar4 = calloc(0x20,1);" (assignment_expression "pvVar4 = calloc(0x20,1)" identifier = (call_expression "calloc(0x20,1)" identifier (argument_list "(0x20,1)" ( number_literal , number_literal )))) ;) (expression_statement "__ptr[0xf] = (int)pvVar4;" (assignment_expression "__ptr[0xf] = (int)pvVar4" (subscript_expression "__ptr[0xf]" identifier [ number_literal ]) = (cast_expression "(int)pvVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (pvVar4 == (void *)0x0) goto LAB_000282d0;" if (parenthesized_expression "(pvVar4 == (void *)0x0)" ( (binary_expression "pvVar4 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000282d0;" goto statement_identifier ;)) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);" do (compound_statement "{\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        }" { (expression_statement "uVar18 = iVar19 * 8;" (assignment_expression "uVar18 = iVar19 * 8" identifier = (binary_expression "iVar19 * 8" identifier * number_literal)) ;) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);" do (compound_statement "{\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          }" { (while_statement "while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }" { (expression_statement "wVar14 = btowc(uVar18);" (assignment_expression "wVar14 = btowc(uVar18)" identifier = (call_expression "btowc(uVar18)" identifier (argument_list "(uVar18)" ( identifier )))) ;) (if_statement "if (wVar14 != 0xffffffff) break;" if (parenthesized_expression "(wVar14 != 0xffffffff)" ( (binary_expression "wVar14 != 0xffffffff" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }" if (parenthesized_expression "((uVar18 & 0xffffff80) == 0)" ( (binary_expression "(uVar18 & 0xffffff80) == 0" (parenthesized_expression "(uVar18 & 0xffffff80)" ( (binary_expression "uVar18 & 0xffffff80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }" { (labeled_statement "LAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;" statement_identifier : (expression_statement "*(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;" (assignment_expression "*(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) = (binary_expression "*(byte *)(__ptr + 0x16) | 8" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) | number_literal)) ;)) })) (labeled_statement "LAB_00028404:\n              iVar20 = iVar20 + 1;" statement_identifier : (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;)) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (if_statement "if (iVar20 == 0x20) goto LAB_00028460;" if (parenthesized_expression "(iVar20 == 0x20)" ( (binary_expression "iVar20 == 0x20" identifier == number_literal) )) (goto_statement "goto LAB_00028460;" goto statement_identifier ;)) })) (expression_statement "*(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);" (assignment_expression "*(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f)" (pointer_expression "*(uint *)(__ptr[0xf] + iVar19)" * (cast_expression "(uint *)(__ptr[0xf] + iVar19)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr[0xf] + iVar19)" ( (binary_expression "__ptr[0xf] + iVar19" (subscript_expression "__ptr[0xf]" identifier [ number_literal ]) + identifier) )))) = (binary_expression "*(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f)" (pointer_expression "*(uint *)(__ptr[0xf] + iVar19)" * (cast_expression "(uint *)(__ptr[0xf] + iVar19)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr[0xf] + iVar19)" ( (binary_expression "__ptr[0xf] + iVar19" (subscript_expression "__ptr[0xf]" identifier [ number_literal ]) + identifier) )))) | (binary_expression "1 << ((byte)iVar20 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar20 & 0x1f)" ( (binary_expression "(byte)iVar20 & 0x1f" (cast_expression "(byte)iVar20" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (if_statement "if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;" if (parenthesized_expression "((uVar18 & 0xffffff80) != 0)" ( (binary_expression "(uVar18 & 0xffffff80) != 0" (parenthesized_expression "(uVar18 & 0xffffff80)" ( (binary_expression "uVar18 & 0xffffff80" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00028404;" goto statement_identifier ;)) (if_statement "if (wVar14 != uVar18) goto LAB_000283fc;" if (parenthesized_expression "(wVar14 != uVar18)" ( (binary_expression "wVar14 != uVar18" identifier != identifier) )) (goto_statement "goto LAB_000283fc;" goto statement_identifier ;)) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar20 != 0x20)" ( (binary_expression "iVar20 != 0x20" identifier != number_literal) )) ;) (labeled_statement "LAB_00028460:\n          iVar19 = iVar19 + 4;" statement_identifier : (expression_statement "iVar19 = iVar19 + 4;" (assignment_expression "iVar19 = iVar19 + 4" identifier = (binary_expression "iVar19 + 4" identifier + number_literal)) ;)) }) while (parenthesized_expression "(iVar19 != 0x20)" ( (binary_expression "iVar19 != 0x20" identifier != number_literal) )) ;) }) (else_clause "else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }" else (compound_statement "{\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }" { (expression_statement "__ptr[0xf] = unaff_EDI + 0x58c9;" (assignment_expression "__ptr[0xf] = unaff_EDI + 0x58c9" (subscript_expression "__ptr[0xf]" identifier [ number_literal ]) = (binary_expression "unaff_EDI + 0x58c9" identifier + number_literal)) ;) }))) })) (if_statement "if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }" if (parenthesized_expression "((*__ptr != 0) && (__ptr[8] != 0))" ( (binary_expression "(*__ptr != 0) && (__ptr[8] != 0)" (parenthesized_expression "(*__ptr != 0)" ( (binary_expression "*__ptr != 0" (pointer_expression "*__ptr" * identifier) != number_literal) )) && (parenthesized_expression "(__ptr[8] != 0)" ( (binary_expression "__ptr[8] != 0" (subscript_expression "__ptr[8]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }" { (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = piVar3[5];" (assignment_expression "iVar19 = piVar3[5]" identifier = (subscript_expression "piVar3[5]" identifier [ number_literal ])) ;) (expression_statement "ppvVar34 = &local_70;" (assignment_expression "ppvVar34 = &local_70" identifier = (pointer_expression "&local_70" & identifier)) ;) (for_statement "for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }" for ( (assignment_expression "iVar20 = 0x13" identifier = number_literal) ; (binary_expression "iVar20 != 0" identifier != number_literal) ; (assignment_expression "iVar20 = iVar20 + -1" identifier = (binary_expression "iVar20 + -1" identifier + number_literal)) ) (compound_statement "{\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }" { (expression_statement "*ppvVar34 = (void *)0x0;" (assignment_expression "*ppvVar34 = (void *)0x0" (pointer_expression "*ppvVar34" * identifier) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;" (assignment_expression "ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1" identifier = (binary_expression "ppvVar34 + (uint)bVar37 * -2 + 1" (binary_expression "ppvVar34 + (uint)bVar37 * -2" identifier + (binary_expression "(uint)bVar37 * -2" (cast_expression "(uint)bVar37" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "uVar18 = param_1 & 0x400000;" (assignment_expression "uVar18 = param_1 & 0x400000" identifier = (binary_expression "param_1 & 0x400000" identifier & number_literal)) ;) (expression_statement "local_2c = uVar18 != 0;" (assignment_expression "local_2c = uVar18 != 0" identifier = (binary_expression "uVar18 != 0" identifier != number_literal)) ;) (expression_statement "local_29 = iVar19 != 0 || uVar18 != 0;" (assignment_expression "local_29 = iVar19 != 0 || uVar18 != 0" identifier = (binary_expression "iVar19 != 0 || uVar18 != 0" (binary_expression "iVar19 != 0" identifier != number_literal) || (binary_expression "uVar18 != 0" identifier != number_literal))) ;) (expression_statement "iVar20 = __ptr[0x17];" (assignment_expression "iVar20 = __ptr[0x17]" identifier = (subscript_expression "__ptr[0x17]" identifier [ number_literal ])) ;) (expression_statement "local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;" (assignment_expression "local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1" identifier = (binary_expression "*(byte *)(__ptr + 0x16) >> 3 & 1" (binary_expression "*(byte *)(__ptr + 0x16) >> 3" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) >> number_literal) & number_literal)) ;) (expression_statement "local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;" (assignment_expression "local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1" identifier = (binary_expression "*(byte *)(__ptr + 0x16) >> 2 & 1" (binary_expression "*(byte *)(__ptr + 0x16) >> 2" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) >> number_literal) & number_literal)) ;) (expression_statement "local_74 = pvVar9;" (assignment_expression "local_74 = pvVar9" identifier = identifier) ;) (expression_statement "local_44 = extraout_ECX;" (assignment_expression "local_44 = extraout_ECX" identifier = identifier) ;) (expression_statement "local_34 = iVar19;" (assignment_expression "local_34 = iVar19" identifier = identifier) ;) (expression_statement "local_24 = iVar20;" (assignment_expression "local_24 = iVar20" identifier = identifier) ;) (if_statement "if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }" if (parenthesized_expression "(extraout_ECX != 0)" ( (binary_expression "extraout_ECX != 0" identifier != number_literal) )) (compound_statement "{\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }" { (expression_statement "iVar7 = FUN_00018140(&local_74,iVar7);" (assignment_expression "iVar7 = FUN_00018140(&local_74,iVar7)" identifier = (call_expression "FUN_00018140(&local_74,iVar7)" identifier (argument_list "(&local_74,iVar7)" ( (pointer_expression "&local_74" & identifier) , identifier )))) ;) (if_statement "if (iVar7 != 0) goto LAB_00028335;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00028335;" goto statement_identifier ;)) (expression_statement "iVar20 = __ptr[0x17];" (assignment_expression "iVar20 = __ptr[0x17]" identifier = (subscript_expression "__ptr[0x17]" identifier [ number_literal ])) ;) })) (if_statement "if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }" if (parenthesized_expression "(local_29 != '\0')" ( (binary_expression "local_29 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pvVar9 = local_70;\n      }" { (expression_statement "pvVar9 = local_70;" (assignment_expression "pvVar9 = local_70" identifier = identifier) ;) })) (expression_statement "local_70 = pvVar9;" (assignment_expression "local_70 = pvVar9" identifier = identifier) ;) (if_statement "if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }" { (if_statement "if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }" if (parenthesized_expression "(iVar20 < 2)" ( (binary_expression "iVar20 < 2" identifier < number_literal) )) (compound_statement "{\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }" { (expression_statement "uVar31 = local_50;" (assignment_expression "uVar31 = local_50" identifier = identifier) ;) (expression_statement "local_54 = local_50;" (assignment_expression "local_54 = local_50" identifier = identifier) ;) (if_statement "if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }" { (if_statement "if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }" if (parenthesized_expression "((int)local_44 <= (int)local_50)" ( (binary_expression "(int)local_44 <= (int)local_50" (cast_expression "(int)local_44" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              local_50 = local_44;\n            }" { (expression_statement "local_50 = local_44;" (assignment_expression "local_50 = local_44" identifier = identifier) ;) })) (expression_statement "uVar31 = local_58;" (assignment_expression "uVar31 = local_58" identifier = identifier) ;) (expression_statement "local_54 = local_58;" (assignment_expression "local_54 = local_58" identifier = identifier) ;) (if_statement "if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }" if (parenthesized_expression "((int)local_58 < (int)local_50)" ( (binary_expression "(int)local_58 < (int)local_50" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }" { (expression_statement "*(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));" (assignment_expression "*(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" (pointer_expression "*(undefined1 *)((int)pvVar9 + local_58)" * (cast_expression "(undefined1 *)((int)pvVar9 + local_58)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar9 + local_58)" ( (binary_expression "(int)pvVar9 + local_58" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (pointer_expression "*(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" * (cast_expression "(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" ( (binary_expression "local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58)" identifier + (binary_expression "(uint)*(byte *)((int)local_74 + local_5c + local_58)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)local_74 + local_5c + local_58)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_74 + local_5c + local_58)" ( (binary_expression "(int)local_74 + local_5c + local_58" (binary_expression "(int)local_74 + local_5c" (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier) ))))) ))))) ;) (expression_statement "local_58 = local_58 + 1;" (assignment_expression "local_58 = local_58 + 1" identifier = (binary_expression "local_58 + 1" identifier + number_literal)) ;) (expression_statement "uVar31 = local_50;" (assignment_expression "uVar31 = local_50" identifier = identifier) ;) (expression_statement "local_54 = local_50;" (assignment_expression "local_54 = local_50" identifier = identifier) ;) (if_statement "if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }" if (parenthesized_expression "((int)local_58 < (int)local_50)" ( (binary_expression "(int)local_58 < (int)local_50" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }" { (do_statement "do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);" do (compound_statement "{\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                }" { (expression_statement "*(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));" (assignment_expression "*(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" (pointer_expression "*(undefined1 *)((int)pvVar9 + local_58)" * (cast_expression "(undefined1 *)((int)pvVar9 + local_58)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar9 + local_58)" ( (binary_expression "(int)pvVar9 + local_58" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (pointer_expression "*(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" * (cast_expression "(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" ( (binary_expression "local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58)" identifier + (binary_expression "(uint)*(byte *)((int)local_74 + local_5c + local_58)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)local_74 + local_5c + local_58)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_74 + local_5c + local_58)" ( (binary_expression "(int)local_74 + local_5c + local_58" (binary_expression "(int)local_74 + local_5c" (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier) ))))) ))))) ;) (expression_statement "local_58 = local_58 + 1;" (assignment_expression "local_58 = local_58 + 1" identifier = (binary_expression "local_58 + 1" identifier + number_literal)) ;) (expression_statement "uVar31 = local_50;" (assignment_expression "uVar31 = local_50" identifier = identifier) ;) }) while (parenthesized_expression "(local_50 != local_58)" ( (binary_expression "local_50 != local_58" identifier != identifier) )) ;) })) })) })) }) (else_clause "else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }" else (compound_statement "{\n          FUN_00018420();\n          uVar31 = local_58;\n        }" { (expression_statement "FUN_00018420();" (call_expression "FUN_00018420()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar31 = local_58;" (assignment_expression "uVar31 = local_58" identifier = identifier) ;) }))) }) (else_clause "else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }" else (compound_statement "{\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }" { (if_statement "if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }" if (parenthesized_expression "(1 < iVar20)" ( (binary_expression "1 < iVar20" number_literal < identifier) )) (compound_statement "{\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }" { (do_statement "do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);" do (compound_statement "{\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          }" { (expression_statement "iVar7 = FUN_00018640(&local_74);" (assignment_expression "iVar7 = FUN_00018640(&local_74)" identifier = (call_expression "FUN_00018640(&local_74)" identifier (argument_list "(&local_74)" ( (pointer_expression "&local_74" & identifier) )))) ;) (if_statement "if (iVar7 != 0) goto LAB_00028335;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00028335;" goto statement_identifier ;)) (expression_statement "uVar31 = local_58;" (assignment_expression "uVar31 = local_58" identifier = identifier) ;) (if_statement "if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;" if (parenthesized_expression "(((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50))" ( (binary_expression "((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)" (parenthesized_expression "((int)extraout_ECX <= (int)local_54)" ( (binary_expression "(int)extraout_ECX <= (int)local_54" (cast_expression "(int)extraout_ECX" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)local_54" ( (type_descriptor "int" primitive_type) ) identifier)) )) || (parenthesized_expression "((int)(__ptr[0x17] + local_58) < (int)local_50)" ( (binary_expression "(int)(__ptr[0x17] + local_58) < (int)local_50" (cast_expression "(int)(__ptr[0x17] + local_58)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(__ptr[0x17] + local_58)" ( (binary_expression "__ptr[0x17] + local_58" (subscript_expression "__ptr[0x17]" identifier [ number_literal ]) + identifier) ))) < (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (goto_statement "goto LAB_00027d86;" goto statement_identifier ;)) (expression_statement "iVar7 = FUN_00018140(&local_74,local_50 * 2);" (assignment_expression "iVar7 = FUN_00018140(&local_74,local_50 * 2)" identifier = (call_expression "FUN_00018140(&local_74,local_50 * 2)" identifier (argument_list "(&local_74,local_50 * 2)" ( (pointer_expression "&local_74" & identifier) , (binary_expression "local_50 * 2" identifier * number_literal) )))) ;) }) while (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) ;) (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (expression_statement "local_88 = iVar7;" (assignment_expression "local_88 = iVar7" identifier = identifier) ;) (goto_statement "goto LAB_00027c60;" goto statement_identifier ;) })) (expression_statement "local_b0 = (int *)local_44;" (assignment_expression "local_b0 = (int *)local_44" identifier = (cast_expression "(int *)local_44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }" if (parenthesized_expression "((int)local_50 <= (int)local_44)" ( (binary_expression "(int)local_50 <= (int)local_44" (cast_expression "(int)local_50" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)local_44" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          local_b0 = (int *)local_50;\n        }" { (expression_statement "local_b0 = (int *)local_50;" (assignment_expression "local_b0 = (int *)local_50" identifier = (cast_expression "(int *)local_50" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (if_statement "if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }" if (parenthesized_expression "((int)local_58 < (int)local_b0)" ( (binary_expression "(int)local_58 < (int)local_b0" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }" { (expression_statement "pp_Var15 = __ctype_toupper_loc();" (assignment_expression "pp_Var15 = __ctype_toupper_loc()" identifier = (call_expression "__ctype_toupper_loc()" identifier (argument_list "()" ( )))) ;) (while_statement "while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }" { (expression_statement "uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);" (assignment_expression "uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58)" identifier = (binary_expression "(uint)*(byte *)((int)local_74 + local_5c + local_58)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)local_74 + local_5c + local_58)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_74 + local_5c + local_58)" ( (binary_expression "(int)local_74 + local_5c + local_58" (binary_expression "(int)local_74 + local_5c" (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier) ))))) ;) (if_statement "if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }" if (parenthesized_expression "(local_34 == 0)" ( (binary_expression "local_34 == 0" identifier == number_literal) )) (compound_statement "{\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }" { (expression_statement "*(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];" (assignment_expression "*(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31]" (pointer_expression "*(char *)((int)pvVar9 + local_58)" * (cast_expression "(char *)((int)pvVar9 + local_58)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar9 + local_58)" ( (binary_expression "(int)pvVar9 + local_58" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (cast_expression "(char)(*pp_Var15)[uVar31]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(*pp_Var15)[uVar31]" (parenthesized_expression "(*pp_Var15)" ( (pointer_expression "*pp_Var15" * identifier) )) [ identifier ]))) ;) }) (else_clause "else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }" else (compound_statement "{\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }" { (expression_statement "*(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];" (assignment_expression "*(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)]" (pointer_expression "*(char *)((int)pvVar9 + local_58)" * (cast_expression "(char *)((int)pvVar9 + local_58)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar9 + local_58)" ( (binary_expression "(int)pvVar9 + local_58" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (cast_expression "(char)(*pp_Var15)[*(byte *)(local_34 + uVar31)]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(*pp_Var15)[*(byte *)(local_34 + uVar31)]" (parenthesized_expression "(*pp_Var15)" ( (pointer_expression "*pp_Var15" * identifier) )) [ (pointer_expression "*(byte *)(local_34 + uVar31)" * (cast_expression "(byte *)(local_34 + uVar31)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_34 + uVar31)" ( (binary_expression "local_34 + uVar31" identifier + identifier) )))) ]))) ;) }))) (if_statement "if (local_b0 == (int *)(local_58 + 1)) break;" if (parenthesized_expression "(local_b0 == (int *)(local_58 + 1))" ( (binary_expression "local_b0 == (int *)(local_58 + 1)" identifier == (cast_expression "(int *)(local_58 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + 1)" ( (binary_expression "local_58 + 1" identifier + number_literal) )))) )) (break_statement "break;" break ;)) (expression_statement "local_58 = local_58 + 1;" (assignment_expression "local_58 = local_58 + 1" identifier = (binary_expression "local_58 + 1" identifier + number_literal)) ;) (expression_statement "pvVar9 = local_70;" (assignment_expression "pvVar9 = local_70" identifier = identifier) ;) })) }) (else_clause "else {\n          local_b0 = (int *)local_58;\n        }" else (compound_statement "{\n          local_b0 = (int *)local_58;\n        }" { (expression_statement "local_b0 = (int *)local_58;" (assignment_expression "local_b0 = (int *)local_58" identifier = (cast_expression "(int *)local_58" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) (expression_statement "local_54 = (uint)local_b0;" (assignment_expression "local_54 = (uint)local_b0" identifier = (cast_expression "(uint)local_b0" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar31 = local_54;" (assignment_expression "uVar31 = local_54" identifier = identifier) ;) }))) (labeled_statement "LAB_00027d86:\n      local_58 = uVar31;" statement_identifier : (expression_statement "local_58 = uVar31;" (assignment_expression "local_58 = uVar31" identifier = identifier) ;)) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = *piVar3;" (assignment_expression "iVar7 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "piVar3[6] = 0;" (assignment_expression "piVar3[6] = 0" (subscript_expression "piVar3[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(uint *)(iVar7 + 0x80) = param_1;" (assignment_expression "*(uint *)(iVar7 + 0x80) = param_1" (pointer_expression "*(uint *)(iVar7 + 0x80)" * (cast_expression "(uint *)(iVar7 + 0x80)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x80)" ( (binary_expression "iVar7 + 0x80" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar19 = FUN_0001afc0();" (assignment_expression "iVar19 = FUN_0001afc0()" identifier = (call_expression "FUN_0001afc0()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_4c = local_4c + iVar19;" (assignment_expression "local_4c = local_4c + iVar19" identifier = (binary_expression "local_4c + iVar19" identifier + identifier)) ;) (expression_statement "puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);" (assignment_expression "puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88)" identifier = (cast_expression "(undefined4 *)FUN_00026f90(param_1,0,&local_88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00026f90(param_1,0,&local_88)" identifier (argument_list "(param_1,0,&local_88)" ( identifier , number_literal , (pointer_expression "&local_88" & identifier) ))))) ;) (if_statement "if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }" if (parenthesized_expression "((local_88 != 0) && (puVar8 == (undefined4 *)0x0))" ( (binary_expression "(local_88 != 0) && (puVar8 == (undefined4 *)0x0)" (parenthesized_expression "(local_88 != 0)" ( (binary_expression "local_88 != 0" identifier != number_literal) )) && (parenthesized_expression "(puVar8 == (undefined4 *)0x0)" ( (binary_expression "puVar8 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }" { (expression_statement "__ptr[0xd] = 0;" (assignment_expression "__ptr[0xd] = 0" (subscript_expression "__ptr[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (goto_statement "goto LAB_00027c60;" goto statement_identifier ;) })) (expression_statement "iVar19 = *(int *)(iVar7 + 0x40);" (assignment_expression "iVar19 = *(int *)(iVar7 + 0x40)" identifier = (pointer_expression "*(int *)(iVar7 + 0x40)" * (cast_expression "(int *)(iVar7 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x40)" ( (binary_expression "iVar7 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }" if (parenthesized_expression "(iVar19 == 0x1f)" ( (binary_expression "iVar19 == 0x1f" identifier == number_literal) )) (compound_statement "{\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }" { (expression_statement "puVar16 = (undefined4 *)malloc(0x3e4);" (assignment_expression "puVar16 = (undefined4 *)malloc(0x3e4)" identifier = (cast_expression "(undefined4 *)malloc(0x3e4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x3e4)" identifier (argument_list "(0x3e4)" ( number_literal ))))) ;) (if_statement "if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }" if (parenthesized_expression "(puVar16 != (undefined4 *)0x0)" ( (binary_expression "puVar16 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }" { (expression_statement "iVar20 = 1;" (assignment_expression "iVar20 = 1" identifier = number_literal) ;) (expression_statement "iVar27 = 4;" (assignment_expression "iVar27 = 4" identifier = number_literal) ;) (expression_statement "iVar26 = 0x18;" (assignment_expression "iVar26 = 0x18" identifier = number_literal) ;) (expression_statement "*puVar16 = *(undefined4 *)(iVar7 + 0x38);" (assignment_expression "*puVar16 = *(undefined4 *)(iVar7 + 0x38)" (pointer_expression "*puVar16" * identifier) = (pointer_expression "*(undefined4 *)(iVar7 + 0x38)" * (cast_expression "(undefined4 *)(iVar7 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x38)" ( (binary_expression "iVar7 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 **)(iVar7 + 0x38) = puVar16;" (assignment_expression "*(undefined4 **)(iVar7 + 0x38) = puVar16" (pointer_expression "*(undefined4 **)(iVar7 + 0x38)" * (cast_expression "(undefined4 **)(iVar7 + 0x38)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x38)" ( (binary_expression "iVar7 + 0x38" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00027e0d;" goto statement_identifier ;) })) (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (if_statement "if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }" if (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }" { (expression_statement "piVar28 = (int *)0x0;" (assignment_expression "piVar28 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar35 = true;" (assignment_expression "bVar35 = true" identifier = true) ;) (goto_statement "goto LAB_00027e67;" goto statement_identifier ;) })) }) (else_clause "else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }" else (compound_statement "{\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }" { (expression_statement "puVar16 = *(undefined4 **)(iVar7 + 0x38);" (assignment_expression "puVar16 = *(undefined4 **)(iVar7 + 0x38)" identifier = (pointer_expression "*(undefined4 **)(iVar7 + 0x38)" * (cast_expression "(undefined4 **)(iVar7 + 0x38)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x38)" ( (binary_expression "iVar7 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "iVar20 = iVar19 + 1;" (assignment_expression "iVar20 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "iVar26 = iVar19 * 0x20 + 0x18;" (assignment_expression "iVar26 = iVar19 * 0x20 + 0x18" identifier = (binary_expression "iVar19 * 0x20 + 0x18" (binary_expression "iVar19 * 0x20" identifier * number_literal) + number_literal)) ;) (expression_statement "iVar27 = iVar19 * 0x20 + 4;" (assignment_expression "iVar27 = iVar19 * 0x20 + 4" identifier = (binary_expression "iVar19 * 0x20 + 4" (binary_expression "iVar19 * 0x20" identifier * number_literal) + number_literal)) ;) (labeled_statement "LAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;" statement_identifier : (expression_statement "*(int *)(iVar7 + 0x40) = iVar20;" (assignment_expression "*(int *)(iVar7 + 0x40) = iVar20" (pointer_expression "*(int *)(iVar7 + 0x40)" * (cast_expression "(int *)(iVar7 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x40)" ( (binary_expression "iVar7 + 0x40" identifier + number_literal) )))) = identifier) ;)) (expression_statement "puVar16[iVar19 * 8 + 1] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 1] = 0" (subscript_expression "puVar16[iVar19 * 8 + 1]" identifier [ (binary_expression "iVar19 * 8 + 1" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "puVar16[iVar19 * 8 + 2] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 2] = 0" (subscript_expression "puVar16[iVar19 * 8 + 2]" identifier [ (binary_expression "iVar19 * 8 + 2" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "puVar16[iVar19 * 8 + 3] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 3] = 0" (subscript_expression "puVar16[iVar19 * 8 + 3]" identifier [ (binary_expression "iVar19 * 8 + 3" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;" (assignment_expression "*(undefined1 *)((int)puVar16 + iVar26 + 4) = 2" (pointer_expression "*(undefined1 *)((int)puVar16 + iVar26 + 4)" * (cast_expression "(undefined1 *)((int)puVar16 + iVar26 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + iVar26 + 4)" ( (binary_expression "(int)puVar16 + iVar26 + 4" (binary_expression "(int)puVar16 + iVar26" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);" (assignment_expression "pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e)" identifier = (cast_expression "(byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + iVar19 * 0x20 + 0x1e)" ( (binary_expression "(int)puVar16 + iVar19 * 0x20 + 0x1e" (binary_expression "(int)puVar16 + iVar19 * 0x20" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar19 * 0x20" identifier * number_literal)) + number_literal) )))) ;) (expression_statement "*pbVar6 = *pbVar6 & 0xf3;" (assignment_expression "*pbVar6 = *pbVar6 & 0xf3" (pointer_expression "*pbVar6" * identifier) = (binary_expression "*pbVar6 & 0xf3" (pointer_expression "*pbVar6" * identifier) & number_literal)) ;) (expression_statement "piVar28 = (int *)(iVar27 + (int)puVar16);" (assignment_expression "piVar28 = (int *)(iVar27 + (int)puVar16)" identifier = (cast_expression "(int *)(iVar27 + (int)puVar16)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + (int)puVar16)" ( (binary_expression "iVar27 + (int)puVar16" identifier + (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "bVar35 = piVar28 == (int *)0x0;" (assignment_expression "bVar35 = piVar28 == (int *)0x0" identifier = (binary_expression "piVar28 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar16[iVar19 * 8 + 4] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 4] = 0" (subscript_expression "puVar16[iVar19 * 8 + 4]" identifier [ (binary_expression "iVar19 * 8 + 4" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (expression_statement "puVar16[iVar19 * 8 + 5] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 5] = 0" (subscript_expression "puVar16[iVar19 * 8 + 5]" identifier [ (binary_expression "iVar19 * 8 + 5" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "puVar16[iVar19 * 8 + 8] = 0xffffffff;" (assignment_expression "puVar16[iVar19 * 8 + 8] = 0xffffffff" (subscript_expression "puVar16[iVar19 * 8 + 8]" identifier [ (binary_expression "iVar19 * 8 + 8" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "piVar21 = piVar28;" (assignment_expression "piVar21 = piVar28" identifier = identifier) ;) (if_statement "if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }" if (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }" { (labeled_statement "LAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);" statement_identifier : (expression_statement "iVar19 = *(int *)(iVar7 + 0x40);" (assignment_expression "iVar19 = *(int *)(iVar7 + 0x40)" identifier = (pointer_expression "*(int *)(iVar7 + 0x40)" * (cast_expression "(int *)(iVar7 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x40)" ( (binary_expression "iVar7 + 0x40" identifier + number_literal) ))))) ;)) (if_statement "if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }" if (parenthesized_expression "(iVar19 == 0x1f)" ( (binary_expression "iVar19 == 0x1f" identifier == number_literal) )) (compound_statement "{\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }" { (expression_statement "puVar16 = (undefined4 *)malloc(0x3e4);" (assignment_expression "puVar16 = (undefined4 *)malloc(0x3e4)" identifier = (cast_expression "(undefined4 *)malloc(0x3e4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x3e4)" identifier (argument_list "(0x3e4)" ( number_literal ))))) ;) (if_statement "if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;" if (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" ( (binary_expression "puVar16 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00028d28;" goto statement_identifier ;)) (expression_statement "iVar20 = 1;" (assignment_expression "iVar20 = 1" identifier = number_literal) ;) (expression_statement "local_94 = 0x18;" (assignment_expression "local_94 = 0x18" identifier = number_literal) ;) (expression_statement "local_98 = 4;" (assignment_expression "local_98 = 4" identifier = number_literal) ;) (expression_statement "*puVar16 = *(undefined4 *)(iVar7 + 0x38);" (assignment_expression "*puVar16 = *(undefined4 *)(iVar7 + 0x38)" (pointer_expression "*puVar16" * identifier) = (pointer_expression "*(undefined4 *)(iVar7 + 0x38)" * (cast_expression "(undefined4 *)(iVar7 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x38)" ( (binary_expression "iVar7 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 **)(iVar7 + 0x38) = puVar16;" (assignment_expression "*(undefined4 **)(iVar7 + 0x38) = puVar16" (pointer_expression "*(undefined4 **)(iVar7 + 0x38)" * (cast_expression "(undefined4 **)(iVar7 + 0x38)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x38)" ( (binary_expression "iVar7 + 0x38" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }" else (compound_statement "{\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }" { (expression_statement "iVar20 = iVar19 + 1;" (assignment_expression "iVar20 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "local_98 = iVar19 * 0x20 + 4;" (assignment_expression "local_98 = iVar19 * 0x20 + 4" identifier = (binary_expression "iVar19 * 0x20 + 4" (binary_expression "iVar19 * 0x20" identifier * number_literal) + number_literal)) ;) (expression_statement "local_94 = iVar19 * 0x20 + 0x18;" (assignment_expression "local_94 = iVar19 * 0x20 + 0x18" identifier = (binary_expression "iVar19 * 0x20 + 0x18" (binary_expression "iVar19 * 0x20" identifier * number_literal) + number_literal)) ;) (expression_statement "puVar16 = *(undefined4 **)(iVar7 + 0x38);" (assignment_expression "puVar16 = *(undefined4 **)(iVar7 + 0x38)" identifier = (pointer_expression "*(undefined4 **)(iVar7 + 0x38)" * (cast_expression "(undefined4 **)(iVar7 + 0x38)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x38)" ( (binary_expression "iVar7 + 0x38" identifier + number_literal) ))))) ;) }))) (expression_statement "*(int *)(iVar7 + 0x40) = iVar20;" (assignment_expression "*(int *)(iVar7 + 0x40) = iVar20" (pointer_expression "*(int *)(iVar7 + 0x40)" * (cast_expression "(int *)(iVar7 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x40)" ( (binary_expression "iVar7 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar16[iVar19 * 8 + 1] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 1] = 0" (subscript_expression "puVar16[iVar19 * 8 + 1]" identifier [ (binary_expression "iVar19 * 8 + 1" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "piVar21 = (int *)(local_98 + (int)puVar16);" (assignment_expression "piVar21 = (int *)(local_98 + (int)puVar16)" identifier = (cast_expression "(int *)(local_98 + (int)puVar16)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_98 + (int)puVar16)" ( (binary_expression "local_98 + (int)puVar16" identifier + (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar16[iVar19 * 8 + 2] = puVar8;" (assignment_expression "puVar16[iVar19 * 8 + 2] = puVar8" (subscript_expression "puVar16[iVar19 * 8 + 2]" identifier [ (binary_expression "iVar19 * 8 + 2" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "puVar16[iVar19 * 8 + 3] = piVar28;" (assignment_expression "puVar16[iVar19 * 8 + 3] = piVar28" (subscript_expression "puVar16[iVar19 * 8 + 3]" identifier [ (binary_expression "iVar19 * 8 + 3" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "*(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;" (assignment_expression "*(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10" (pointer_expression "*(undefined1 *)((int)puVar16 + local_94 + 4)" * (cast_expression "(undefined1 *)((int)puVar16 + local_94 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + local_94 + 4)" ( (binary_expression "(int)puVar16 + local_94 + 4" (binary_expression "(int)puVar16 + local_94" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);" (assignment_expression "pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e)" identifier = (cast_expression "(byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + iVar19 * 0x20 + 0x1e)" ( (binary_expression "(int)puVar16 + iVar19 * 0x20 + 0x1e" (binary_expression "(int)puVar16 + iVar19 * 0x20" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar19 * 0x20" identifier * number_literal)) + number_literal) )))) ;) (expression_statement "*pbVar6 = *pbVar6 & 0xf3;" (assignment_expression "*pbVar6 = *pbVar6 & 0xf3" (pointer_expression "*pbVar6" * identifier) = (binary_expression "*pbVar6 & 0xf3" (pointer_expression "*pbVar6" * identifier) & number_literal)) ;) (expression_statement "puVar16[iVar19 * 8 + 4] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 4] = 0" (subscript_expression "puVar16[iVar19 * 8 + 4]" identifier [ (binary_expression "iVar19 * 8 + 4" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "puVar16[iVar19 * 8 + 5] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 5] = 0" (subscript_expression "puVar16[iVar19 * 8 + 5]" identifier [ (binary_expression "iVar19 * 8 + 5" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "puVar16[iVar19 * 8 + 8] = 0xffffffff;" (assignment_expression "puVar16[iVar19 * 8 + 8] = 0xffffffff" (subscript_expression "puVar16[iVar19 * 8 + 8]" identifier [ (binary_expression "iVar19 * 8 + 8" (binary_expression "iVar19 * 8" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);" (assignment_expression "bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0)" identifier = (cast_expression "(bool)(bVar35 | piVar21 == (int *)0x0)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar35 | piVar21 == (int *)0x0)" ( (binary_expression "bVar35 | piVar21 == (int *)0x0" identifier | (binary_expression "piVar21 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )))) ;) (expression_statement "*puVar8 = piVar21;" (assignment_expression "*puVar8 = piVar21" (pointer_expression "*puVar8" * identifier) = identifier) ;) (if_statement "if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }" if (parenthesized_expression "(piVar28 != (int *)0x0)" ( (binary_expression "piVar28 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *piVar28 = (int)piVar21;\n          }" { (expression_statement "*piVar28 = (int)piVar21;" (assignment_expression "*piVar28 = (int)piVar21" (pointer_expression "*piVar28" * identifier) = (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) })) (expression_statement "piVar28 = local_b0;" (assignment_expression "piVar28 = local_b0" identifier = identifier) ;) (if_statement "if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }" if (parenthesized_expression "(!bVar35)" ( (unary_expression "!bVar35" ! identifier) )) (compound_statement "{\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }" { (expression_statement "__ptr[0xd] = (int)piVar21;" (assignment_expression "__ptr[0xd] = (int)piVar21" (subscript_expression "__ptr[0xd]" identifier [ number_literal ]) = (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "sVar5 = local_b0[1] * 4;" (assignment_expression "sVar5 = local_b0[1] * 4" identifier = (binary_expression "local_b0[1] * 4" (subscript_expression "local_b0[1]" identifier [ number_literal ]) * number_literal)) ;) (expression_statement "__size = local_b0[1] * 0xc;" (assignment_expression "__size = local_b0[1] * 0xc" identifier = (binary_expression "local_b0[1] * 0xc" (subscript_expression "local_b0[1]" identifier [ number_literal ]) * number_literal)) ;) (expression_statement "pvVar9 = malloc(sVar5);" (assignment_expression "pvVar9 = malloc(sVar5)" identifier = (call_expression "malloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier )))) ;) (expression_statement "local_b0[3] = (int)pvVar9;" (assignment_expression "local_b0[3] = (int)pvVar9" (subscript_expression "local_b0[3]" identifier [ number_literal ]) = (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pvVar4 = malloc(sVar5);" (assignment_expression "pvVar4 = malloc(sVar5)" identifier = (call_expression "malloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier )))) ;) (expression_statement "local_b0[4] = (int)pvVar4;" (assignment_expression "local_b0[4] = (int)pvVar4" (subscript_expression "local_b0[4]" identifier [ number_literal ]) = (cast_expression "(int)pvVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pvVar10 = malloc(__size);" (assignment_expression "pvVar10 = malloc(__size)" identifier = (call_expression "malloc(__size)" identifier (argument_list "(__size)" ( identifier )))) ;) (expression_statement "local_b0[5] = (int)pvVar10;" (assignment_expression "local_b0[5] = (int)pvVar10" (subscript_expression "local_b0[5]" identifier [ number_literal ]) = (cast_expression "(int)pvVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pvVar11 = malloc(__size);" (assignment_expression "pvVar11 = malloc(__size)" identifier = (call_expression "malloc(__size)" identifier (argument_list "(__size)" ( identifier )))) ;) (expression_statement "local_b0[6] = (int)pvVar11;" (assignment_expression "local_b0[6] = (int)pvVar11" (subscript_expression "local_b0[6]" identifier [ number_literal ]) = (cast_expression "(int)pvVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }" if (parenthesized_expression "((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0))" ( (binary_expression "(((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)" (parenthesized_expression "(((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0))" ( (binary_expression "((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)" (parenthesized_expression "((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0))" ( (binary_expression "(pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)" (parenthesized_expression "(pvVar9 != (void *)0x0)" ( (binary_expression "pvVar9 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pvVar4 != (void *)0x0)" ( (binary_expression "pvVar4 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(pvVar10 != (void *)0x0)" ( (binary_expression "pvVar10 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(pvVar11 != (void *)0x0)" ( (binary_expression "pvVar11 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }" { (expression_statement "iVar7 = piVar3[6];" (assignment_expression "iVar7 = piVar3[6]" identifier = (subscript_expression "piVar3[6]" identifier [ number_literal ])) ;) (expression_statement "piVar12 = (int *)malloc(iVar7 * 4);" (assignment_expression "piVar12 = (int *)malloc(iVar7 * 4)" identifier = (cast_expression "(int *)malloc(iVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(iVar7 * 4)" identifier (argument_list "(iVar7 * 4)" ( (binary_expression "iVar7 * 4" identifier * number_literal) ))))) ;) (expression_statement "local_b0[0x21] = (int)piVar12;" (assignment_expression "local_b0[0x21] = (int)piVar12" (subscript_expression "local_b0[0x21]" identifier [ number_literal ]) = (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar21 = (int *)local_b0[0xd];" (assignment_expression "piVar21 = (int *)local_b0[0xd]" identifier = (cast_expression "(int *)local_b0[0xd]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b0[0xd]" identifier [ number_literal ]))) ;) (if_statement "if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }" if (parenthesized_expression "(piVar12 != (int *)0x0)" ( (binary_expression "piVar12 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (if_statement "if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }" { (do_statement "do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);" do (compound_statement "{\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                }" { (expression_statement "piVar12[iVar19] = iVar19;" (assignment_expression "piVar12[iVar19] = iVar19" (subscript_expression "piVar12[iVar19]" identifier [ identifier ]) = identifier) ;) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar19 != iVar7)" ( (binary_expression "iVar19 != iVar7" identifier != identifier) )) ;) })) (expression_statement "cVar17 = (char)piVar21[6];" (assignment_expression "cVar17 = (char)piVar21[6]" identifier = (cast_expression "(char)piVar21[6]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar21[6]" identifier [ number_literal ]))) ;) (expression_statement "piVar22 = (int *)piVar21[1];" (assignment_expression "piVar22 = (int *)piVar21[1]" identifier = (cast_expression "(int *)piVar21[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar21[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar25 = piVar21;" (assignment_expression "piVar25 = piVar21" identifier = identifier) ;) (labeled_statement "LAB_00028010:\n              piVar29 = piVar25;" statement_identifier : (expression_statement "piVar29 = piVar25;" (assignment_expression "piVar29 = piVar25" identifier = identifier) ;)) (expression_statement "piVar25 = piVar22;" (assignment_expression "piVar25 = piVar22" identifier = identifier) ;) (expression_statement "piVar24 = piVar25;" (assignment_expression "piVar24 = piVar25" identifier = identifier) ;) (if_statement "if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }" if (parenthesized_expression "(cVar17 == '\x04')" ( (binary_expression "cVar17 == '\x04'" identifier == (char_literal "'\x04'" ' escape_sequence ')) )) (compound_statement "{\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }" { (expression_statement "iVar19 = piVar12[piVar29[5]];" (assignment_expression "iVar19 = piVar12[piVar29[5]]" identifier = (subscript_expression "piVar12[piVar29[5]]" identifier [ (subscript_expression "piVar29[5]" identifier [ number_literal ]) ])) ;) (expression_statement "piVar29[5] = iVar19;" (assignment_expression "piVar29[5] = iVar19" (subscript_expression "piVar29[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);" (assignment_expression "local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f)" (subscript_expression "local_b0[0x14]" identifier [ number_literal ]) = (binary_expression "local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f)" (subscript_expression "local_b0[0x14]" identifier [ number_literal ]) | (binary_expression "1 << ((byte)iVar19 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar19 & 0x1f)" ( (binary_expression "(byte)iVar19 & 0x1f" (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) (goto_statement "goto joined_r0x00028003;" goto statement_identifier ;) })) (if_statement "if (cVar17 != '\x11') goto joined_r0x00028003;" if (parenthesized_expression "(cVar17 != '\x11')" ( (binary_expression "cVar17 != '\x11'" identifier != (char_literal "'\x11'" ' escape_sequence ')) )) (goto_statement "goto joined_r0x00028003;" goto statement_identifier ;)) (if_statement "if (piVar25 != (int *)0x0) goto code_r0x00028148;" if (parenthesized_expression "(piVar25 != (int *)0x0)" ( (binary_expression "piVar25 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto code_r0x00028148;" goto statement_identifier ;)) (goto_statement "goto LAB_00028038;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002809c;" goto statement_identifier ;) })) (expression_statement "local_88 = 0xc;" (assignment_expression "local_88 = 0xc" identifier = number_literal) ;) (goto_statement "goto LAB_00027c60;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00028d28:\n      local_88 = 0xc;" statement_identifier : (expression_statement "local_88 = 0xc;" (assignment_expression "local_88 = 0xc" identifier = number_literal) ;)) (expression_statement "__ptr[0xd] = 0;" (assignment_expression "__ptr[0xd] = 0" (subscript_expression "__ptr[0xd]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_00027c60;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000282d0:\n  local_88 = 0xc;" statement_identifier : (expression_statement "local_88 = 0xc;" (assignment_expression "local_88 = 0xc" identifier = number_literal) ;)) (goto_statement "goto LAB_000282d8;" goto statement_identifier ;) (labeled_statement "code_r0x00028148:\n  cVar17 = (char)piVar25[6];" statement_identifier : (expression_statement "cVar17 = (char)piVar25[6];" (assignment_expression "cVar17 = (char)piVar25[6]" identifier = (cast_expression "(char)piVar25[6]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar25[6]" identifier [ number_literal ]))) ;)) (expression_statement "piVar24 = (int *)piVar25[1];" (assignment_expression "piVar24 = (int *)piVar25[1]" identifier = (cast_expression "(int *)piVar25[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar25[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar22 = piVar24;" (assignment_expression "piVar22 = piVar24" identifier = identifier) ;) (if_statement "if (cVar17 == '\x11') {\n    iVar19 = piVar25[5];\n    piVar29[1] = (int)piVar24;\n    if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }\n    piVar12[iVar19] = piVar12[piVar29[5]];\n    if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }\njoined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar17 = (char)piVar24[6];\n    piVar22 = (int *)piVar24[1];\n    piVar25 = piVar24;\n  }" if (parenthesized_expression "(cVar17 == '\x11')" ( (binary_expression "cVar17 == '\x11'" identifier == (char_literal "'\x11'" ' escape_sequence ')) )) (compound_statement "{\n    iVar19 = piVar25[5];\n    piVar29[1] = (int)piVar24;\n    if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }\n    piVar12[iVar19] = piVar12[piVar29[5]];\n    if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }\njoined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar17 = (char)piVar24[6];\n    piVar22 = (int *)piVar24[1];\n    piVar25 = piVar24;\n  }" { (expression_statement "iVar19 = piVar25[5];" (assignment_expression "iVar19 = piVar25[5]" identifier = (subscript_expression "piVar25[5]" identifier [ number_literal ])) ;) (expression_statement "piVar29[1] = (int)piVar24;" (assignment_expression "piVar29[1] = (int)piVar24" (subscript_expression "piVar29[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }" if (parenthesized_expression "(piVar24 != (int *)0x0)" ( (binary_expression "piVar24 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *piVar24 = (int)piVar29;\n    }" { (expression_statement "*piVar24 = (int)piVar29;" (assignment_expression "*piVar24 = (int)piVar29" (pointer_expression "*piVar24" * identifier) = (cast_expression "(int)piVar29" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "piVar12[iVar19] = piVar12[piVar29[5]];" (assignment_expression "piVar12[iVar19] = piVar12[piVar29[5]]" (subscript_expression "piVar12[iVar19]" identifier [ identifier ]) = (subscript_expression "piVar12[piVar29[5]]" identifier [ (subscript_expression "piVar29[5]" identifier [ number_literal ]) ])) ;) (if_statement "if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }" if (parenthesized_expression "(iVar19 < 0x20)" ( (binary_expression "iVar19 < 0x20" identifier < number_literal) )) (compound_statement "{\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }" { (expression_statement "local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));" (assignment_expression "local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f))" (subscript_expression "local_b0[0x14]" identifier [ number_literal ]) = (binary_expression "local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f))" (subscript_expression "local_b0[0x14]" identifier [ number_literal ]) & (unary_expression "~(1 << ((byte)iVar19 & 0x1f))" ~ (parenthesized_expression "(1 << ((byte)iVar19 & 0x1f))" ( (binary_expression "1 << ((byte)iVar19 & 0x1f)" number_literal << (parenthesized_expression "((byte)iVar19 & 0x1f)" ( (binary_expression "(byte)iVar19 & 0x1f" (cast_expression "(byte)iVar19" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) ))))) ;) })) (labeled_statement "joined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }" statement_identifier : (if_statement "if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }" if (parenthesized_expression "(piVar24 == (int *)0x0)" ( (binary_expression "piVar24 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }" { (labeled_statement "LAB_00028038:\n      piVar22 = (int *)0x0;" statement_identifier : (expression_statement "piVar22 = (int *)0x0;" (assignment_expression "piVar22 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (while_statement "while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }" while (parenthesized_expression "((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0)))" ( (parenthesized_expression "(piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))" ( (comma_expression "piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0)" (assignment_expression "piVar24 = (int *)piVar29[2]" identifier = (cast_expression "(int *)piVar29[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar29[2]" identifier [ number_literal ]))) , (binary_expression "piVar24 == piVar22 || (piVar24 == (int *)0x0)" (binary_expression "piVar24 == piVar22" identifier == identifier) || (parenthesized_expression "(piVar24 == (int *)0x0)" ( (binary_expression "piVar24 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )))) )) )) (compound_statement "{\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }" { (expression_statement "piVar25 = (int *)*piVar29;" (assignment_expression "piVar25 = (int *)*piVar29" identifier = (cast_expression "(int *)*piVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar29" * identifier))) ;) (expression_statement "piVar22 = piVar29;" (assignment_expression "piVar22 = piVar29" identifier = identifier) ;) (expression_statement "piVar29 = piVar25;" (assignment_expression "piVar29 = piVar25" identifier = identifier) ;) (if_statement "if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }" if (parenthesized_expression "(piVar25 == (int *)0x0)" ( (binary_expression "piVar25 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }" { (if_statement "if (iVar7 == 0) goto LAB_00028074;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00028074;" goto statement_identifier ;)) (expression_statement "iVar19 = *piVar12;" (assignment_expression "iVar19 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (if_statement "if (iVar19 == 0) goto LAB_0002806d;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002806d;" goto statement_identifier ;)) (goto_statement "goto LAB_0002809c;" goto statement_identifier ;) })) })) }))) (expression_statement "cVar17 = (char)piVar24[6];" (assignment_expression "cVar17 = (char)piVar24[6]" identifier = (cast_expression "(char)piVar24[6]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar24[6]" identifier [ number_literal ]))) ;) (expression_statement "piVar22 = (int *)piVar24[1];" (assignment_expression "piVar22 = (int *)piVar24[1]" identifier = (cast_expression "(int *)piVar24[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar24[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar25 = piVar24;" (assignment_expression "piVar25 = piVar24" identifier = identifier) ;) })) (goto_statement "goto LAB_00028010;" goto statement_identifier ;) (while_statement "while (piVar12[iVar19] == iVar19) {\nLAB_0002806d:\n    iVar19 = iVar19 + 1;\n    if (iVar19 == iVar7) goto LAB_00028074;\n  }" while (parenthesized_expression "(piVar12[iVar19] == iVar19)" ( (binary_expression "piVar12[iVar19] == iVar19" (subscript_expression "piVar12[iVar19]" identifier [ identifier ]) == identifier) )) (compound_statement "{\nLAB_0002806d:\n    iVar19 = iVar19 + 1;\n    if (iVar19 == iVar7) goto LAB_00028074;\n  }" { (labeled_statement "LAB_0002806d:\n    iVar19 = iVar19 + 1;" statement_identifier : (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;)) (if_statement "if (iVar19 == iVar7) goto LAB_00028074;" if (parenthesized_expression "(iVar19 == iVar7)" ( (binary_expression "iVar19 == iVar7" identifier == identifier) )) (goto_statement "goto LAB_00028074;" goto statement_identifier ;)) })) (labeled_statement "LAB_0002809c:\n  do {\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  } while (piVar21 != (int *)0x0);" statement_identifier : (do_statement "do {\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  } while (piVar21 != (int *)0x0);" do (compound_statement "{\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  }" { (expression_statement "piVar22 = (int *)piVar21[1];" (assignment_expression "piVar22 = (int *)piVar21[1]" identifier = (cast_expression "(int *)piVar21[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar21[1]" identifier [ number_literal ]))) ;) (expression_statement "piVar12 = piVar21;" (assignment_expression "piVar12 = piVar21" identifier = identifier) ;) (while_statement "while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }" while (parenthesized_expression "(piVar21 = piVar22, piVar21 != (int *)0x0)" ( (comma_expression "piVar21 = piVar22, piVar21 != (int *)0x0" (assignment_expression "piVar21 = piVar22" identifier = identifier) , (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }" { (expression_statement "piVar12 = piVar21;" (assignment_expression "piVar12 = piVar21" identifier = identifier) ;) (expression_statement "piVar22 = (int *)piVar21[1];" (assignment_expression "piVar22 = (int *)piVar21[1]" identifier = (cast_expression "(int *)piVar21[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar21[1]" identifier [ number_literal ]))) ;) })) (expression_statement "piVar21 = (int *)piVar12[2];" (assignment_expression "piVar21 = (int *)piVar12[2]" identifier = (cast_expression "(int *)piVar12[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[2]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(piVar21 != (int *)0x0)" ( (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "piVar21 = (int *)0x0;" (assignment_expression "piVar21 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    local_80 = 0;\n    if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }\n    piVar22 = (int *)*piVar12;\n    if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }\n    piVar21 = (int *)piVar22[2];\n    if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;\n    iVar7 = piVar22[1];\n    piVar12 = piVar22;\n  } while( true );" do (compound_statement "{\n    local_80 = 0;\n    if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }\n    piVar22 = (int *)*piVar12;\n    if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }\n    piVar21 = (int *)piVar22[2];\n    if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;\n    iVar7 = piVar22[1];\n    piVar12 = piVar22;\n  }" { (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (if_statement "if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }" if (parenthesized_expression "((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11'))" ( (binary_expression "(iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')" (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(char *)(iVar7 + 0x18) != '\x11')" ( (binary_expression "*(char *)(iVar7 + 0x18) != '\x11'" (pointer_expression "*(char *)(iVar7 + 0x18)" * (cast_expression "(char *)(iVar7 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x18)" ( (binary_expression "iVar7 + 0x18" identifier + number_literal) )))) != (char_literal "'\x11'" ' escape_sequence ')) ))) )) (compound_statement "{\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }" { (if_statement "if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }" if (parenthesized_expression "(piVar21 != (int *)0x0)" ( (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }" { (expression_statement "cVar17 = (char)piVar21[6];" (assignment_expression "cVar17 = (char)piVar21[6]" identifier = (cast_expression "(char)piVar21[6]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar21[6]" identifier [ number_literal ]))) ;) (goto_statement "goto joined_r0x000280c8;" goto statement_identifier ;) })) }) (else_clause "else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }" else (compound_statement "{\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }" { (expression_statement "puVar8 = (undefined4 *)FUN_00020ab0();" (assignment_expression "puVar8 = (undefined4 *)FUN_00020ab0()" identifier = (cast_expression "(undefined4 *)FUN_00020ab0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00020ab0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar12[1] = (int)puVar8;" (assignment_expression "piVar12[1] = (int)puVar8" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }" if (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar8 = piVar12;\n      }" { (expression_statement "*puVar8 = piVar12;" (assignment_expression "*puVar8 = piVar12" (pointer_expression "*puVar8" * identifier) = identifier) ;) })) (if_statement "if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }" if (parenthesized_expression "(piVar12[2] != 0)" ( (binary_expression "piVar12[2] != 0" (subscript_expression "piVar12[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }" { (expression_statement "cVar17 = *(char *)(piVar12[2] + 0x18);" (assignment_expression "cVar17 = *(char *)(piVar12[2] + 0x18)" identifier = (pointer_expression "*(char *)(piVar12[2] + 0x18)" * (cast_expression "(char *)(piVar12[2] + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12[2] + 0x18)" ( (binary_expression "piVar12[2] + 0x18" (subscript_expression "piVar12[2]" identifier [ number_literal ]) + number_literal) ))))) ;) (labeled_statement "joined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }" statement_identifier : (if_statement "if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }" if (parenthesized_expression "(cVar17 == '\x11')" ( (binary_expression "cVar17 == '\x11'" identifier == (char_literal "'\x11'" ' escape_sequence ')) )) (compound_statement "{\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }" { (expression_statement "puVar8 = (undefined4 *)FUN_00020ab0();" (assignment_expression "puVar8 = (undefined4 *)FUN_00020ab0()" identifier = (cast_expression "(undefined4 *)FUN_00020ab0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00020ab0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar12[2] = (int)puVar8;" (assignment_expression "piVar12[2] = (int)puVar8" (subscript_expression "piVar12[2]" identifier [ number_literal ]) = (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }" if (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *puVar8 = piVar12;\n          }" { (expression_statement "*puVar8 = piVar12;" (assignment_expression "*puVar8 = piVar12" (pointer_expression "*puVar8" * identifier) = identifier) ;) })) }))) })) (expression_statement "iVar7 = local_80;" (assignment_expression "iVar7 = local_80" identifier = identifier) ;) (if_statement "if (local_80 != 0) goto LAB_00028335;" if (parenthesized_expression "(local_80 != 0)" ( (binary_expression "local_80 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00028335;" goto statement_identifier ;)) }))) (expression_statement "piVar22 = (int *)*piVar12;" (assignment_expression "piVar22 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ;) (if_statement "if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }" if (parenthesized_expression "(piVar22 == (int *)0x0)" ( (binary_expression "piVar22 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }" { (expression_statement "puVar8 = (undefined4 *)local_b0[0xd];" (assignment_expression "puVar8 = (undefined4 *)local_b0[0xd]" identifier = (cast_expression "(undefined4 *)local_b0[0xd]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b0[0xd]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_000281a0;" goto statement_identifier ;) })) (expression_statement "piVar21 = (int *)piVar22[2];" (assignment_expression "piVar21 = (int *)piVar22[2]" identifier = (cast_expression "(int *)piVar22[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar22[2]" identifier [ number_literal ]))) ;) (if_statement "if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;" if (parenthesized_expression "((piVar21 != (int *)0x0) && (piVar12 != piVar21))" ( (binary_expression "(piVar21 != (int *)0x0) && (piVar12 != piVar21)" (parenthesized_expression "(piVar21 != (int *)0x0)" ( (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(piVar12 != piVar21)" ( (binary_expression "piVar12 != piVar21" identifier != identifier) ))) )) (goto_statement "goto LAB_0002809c;" goto statement_identifier ;)) (expression_statement "iVar7 = piVar22[1];" (assignment_expression "iVar7 = piVar22[1]" identifier = (subscript_expression "piVar22[1]" identifier [ number_literal ])) ;) (expression_statement "piVar12 = piVar22;" (assignment_expression "piVar12 = piVar22" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "LAB_00028074:\n  free(piVar12);" statement_identifier : (expression_statement "free(piVar12);" (call_expression "free(piVar12)" identifier (argument_list "(piVar12)" ( identifier ))) ;)) (expression_statement "local_b0[0x21] = 0;" (assignment_expression "local_b0[0x21] = 0" (subscript_expression "local_b0[0x21]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar21 = (int *)local_b0[0xd];" (assignment_expression "piVar21 = (int *)local_b0[0xd]" identifier = (cast_expression "(int *)local_b0[0xd]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b0[0xd]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_0002809c;" goto statement_identifier ;) (labeled_statement "LAB_000281a0:\n  do {\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  } while ((undefined4 *)puVar16[2] != (undefined4 *)0x0);" statement_identifier : (do_statement "do {\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  } while ((undefined4 *)puVar16[2] != (undefined4 *)0x0);" do (compound_statement "{\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  }" { (do_statement "do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);" do (compound_statement "{\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    }" { (expression_statement "puVar16 = puVar8;" (assignment_expression "puVar16 = puVar8" identifier = identifier) ;) (expression_statement "puVar8 = (undefined4 *)puVar16[1];" (assignment_expression "puVar8 = (undefined4 *)puVar16[1]" identifier = (cast_expression "(undefined4 *)puVar16[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[1]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "((undefined4 *)puVar16[1] != (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)puVar16[1] != (undefined4 *)0x0" (cast_expression "(undefined4 *)puVar16[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[1]" identifier [ number_literal ])) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar8 = (undefined4 *)puVar16[2];" (assignment_expression "puVar8 = (undefined4 *)puVar16[2]" identifier = (cast_expression "(undefined4 *)puVar16[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[2]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "((undefined4 *)puVar16[2] != (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)puVar16[2] != (undefined4 *)0x0" (cast_expression "(undefined4 *)puVar16[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[2]" identifier [ number_literal ])) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (do_statement "do {\n    if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    puVar8 = (undefined4 *)puVar13[2];\n    bVar35 = puVar16 == puVar8;\n    puVar16 = puVar13;\n  } while (puVar8 == (undefined4 *)0x0 || bVar35);" do (compound_statement "{\n    if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    puVar8 = (undefined4 *)puVar13[2];\n    bVar35 = puVar16 == puVar8;\n    puVar16 = puVar13;\n  }" { (if_statement "if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }" if (parenthesized_expression "(*(char *)(puVar16 + 6) == '\x10')" ( (binary_expression "*(char *)(puVar16 + 6) == '\x10'" (pointer_expression "*(char *)(puVar16 + 6)" * (cast_expression "(char *)(puVar16 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 6)" ( (binary_expression "puVar16 + 6" identifier + number_literal) )))) == (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }" { (expression_statement "uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);" (assignment_expression "uVar2 = *(undefined4 *)(puVar16[1] + 0x1c)" identifier = (pointer_expression "*(undefined4 *)(puVar16[1] + 0x1c)" * (cast_expression "(undefined4 *)(puVar16[1] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16[1] + 0x1c)" ( (binary_expression "puVar16[1] + 0x1c" (subscript_expression "puVar16[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);" (assignment_expression "puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc)" (subscript_expression "puVar16[3]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(puVar16[1] + 0xc)" * (cast_expression "(undefined4 *)(puVar16[1] + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16[1] + 0xc)" ( (binary_expression "puVar16[1] + 0xc" (subscript_expression "puVar16[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "puVar16[7] = uVar2;" (assignment_expression "puVar16[7] = uVar2" (subscript_expression "puVar16[7]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "LAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;" statement_identifier : (expression_statement "puVar13 = (undefined4 *)*puVar16;" (assignment_expression "puVar13 = (undefined4 *)*puVar16" identifier = (cast_expression "(undefined4 *)*puVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;)) }) (else_clause "else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }" else (compound_statement "{\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }" { (expression_statement "puVar16[3] = puVar16;" (assignment_expression "puVar16[3] = puVar16" (subscript_expression "puVar16[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = FUN_00018d20();" (assignment_expression "iVar7 = FUN_00018d20()" identifier = (call_expression "FUN_00018d20()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar16[7] = iVar7;" (assignment_expression "puVar16[7] = iVar7" (subscript_expression "puVar16[7]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar7 == -1) goto LAB_00028330;" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (goto_statement "goto LAB_00028330;" goto statement_identifier ;)) (if_statement "if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;" if (parenthesized_expression "(*(char *)(puVar16 + 6) != '\f')" ( (binary_expression "*(char *)(puVar16 + 6) != '\f'" (pointer_expression "*(char *)(puVar16 + 6)" * (cast_expression "(char *)(puVar16 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 6)" ( (binary_expression "puVar16 + 6" identifier + number_literal) )))) != (char_literal "'\f'" ' escape_sequence ')) )) (goto_statement "goto LAB_000281c7;" goto statement_identifier ;)) (expression_statement "*(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;" (assignment_expression "*(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8" (pointer_expression "*(uint *)(*local_b0 + 4 + iVar7 * 8)" * (cast_expression "(uint *)(*local_b0 + 4 + iVar7 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_b0 + 4 + iVar7 * 8)" ( (binary_expression "*local_b0 + 4 + iVar7 * 8" (binary_expression "*local_b0 + 4" (pointer_expression "*local_b0" * identifier) + number_literal) + (binary_expression "iVar7 * 8" identifier * number_literal)) )))) = (binary_expression "*(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8" (binary_expression "*(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff" (pointer_expression "*(uint *)(*local_b0 + 4 + iVar7 * 8)" * (cast_expression "(uint *)(*local_b0 + 4 + iVar7 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_b0 + 4 + iVar7 * 8)" ( (binary_expression "*local_b0 + 4 + iVar7 * 8" (binary_expression "*local_b0 + 4" (pointer_expression "*local_b0" * identifier) + number_literal) + (binary_expression "iVar7 * 8" identifier * number_literal)) )))) & number_literal) | (binary_expression "(puVar16[5] & 0x3ff) << 8" (parenthesized_expression "(puVar16[5] & 0x3ff)" ( (binary_expression "puVar16[5] & 0x3ff" (subscript_expression "puVar16[5]" identifier [ number_literal ]) & number_literal) )) << number_literal))) ;) (expression_statement "puVar13 = (undefined4 *)*puVar16;" (assignment_expression "puVar13 = (undefined4 *)*puVar16" identifier = (cast_expression "(undefined4 *)*puVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) }))) (if_statement "if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }" if (parenthesized_expression "(puVar13 == (undefined4 *)0x0)" ( (binary_expression "puVar13 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }" { (expression_statement "puVar8 = (undefined4 *)local_b0[0xd];" (assignment_expression "puVar8 = (undefined4 *)local_b0[0xd]" identifier = (cast_expression "(undefined4 *)local_b0[0xd]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b0[0xd]" identifier [ number_literal ]))) ;) (expression_statement "cVar17 = *(char *)(puVar8 + 6);" (assignment_expression "cVar17 = *(char *)(puVar8 + 6)" identifier = (pointer_expression "*(char *)(puVar8 + 6)" * (cast_expression "(char *)(puVar8 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 6)" ( (binary_expression "puVar8 + 6" identifier + number_literal) ))))) ;) (expression_statement "puVar16 = (undefined4 *)puVar8[1];" (assignment_expression "puVar16 = (undefined4 *)puVar8[1]" identifier = (cast_expression "(undefined4 *)puVar8[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar13 = puVar8;" (assignment_expression "puVar13 = puVar8" identifier = identifier) ;) (if_statement "if (cVar17 == '\v') goto LAB_00028283;" if (parenthesized_expression "(cVar17 == '\v')" ( (binary_expression "cVar17 == '\v'" identifier == (char_literal "'\v'" ' escape_sequence ')) )) (goto_statement "goto LAB_00028283;" goto statement_identifier ;)) (goto_statement "goto LAB_00028250;" goto statement_identifier ;) })) (expression_statement "puVar8 = (undefined4 *)puVar13[2];" (assignment_expression "puVar8 = (undefined4 *)puVar13[2]" identifier = (cast_expression "(undefined4 *)puVar13[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[2]" identifier [ number_literal ]))) ;) (expression_statement "bVar35 = puVar16 == puVar8;" (assignment_expression "bVar35 = puVar16 == puVar8" identifier = (binary_expression "puVar16 == puVar8" identifier == identifier)) ;) (expression_statement "puVar16 = puVar13;" (assignment_expression "puVar16 = puVar13" identifier = identifier) ;) }) while (parenthesized_expression "(puVar8 == (undefined4 *)0x0 || bVar35)" ( (binary_expression "puVar8 == (undefined4 *)0x0 || bVar35" (binary_expression "puVar8 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || identifier) )) ;) (goto_statement "goto LAB_000281a0;" goto statement_identifier ;) (labeled_statement "LAB_00028250:\n  if (cVar17 == '\x10') {\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }\n  else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }" statement_identifier : (if_statement "if (cVar17 == '\x10') {\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }\n  else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }" if (parenthesized_expression "(cVar17 == '\x10')" ( (binary_expression "cVar17 == '\x10'" identifier == (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }" { (expression_statement "iVar7 = puVar13[2];" (assignment_expression "iVar7 = puVar13[2]" identifier = (subscript_expression "puVar13[2]" identifier [ number_literal ])) ;) (expression_statement "puVar16[4] = *(undefined4 *)(iVar7 + 0xc);" (assignment_expression "puVar16[4] = *(undefined4 *)(iVar7 + 0xc)" (subscript_expression "puVar16[4]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(iVar7 + 0xc)" * (cast_expression "(undefined4 *)(iVar7 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar7 + 0x10) = puVar13[4];" (assignment_expression "*(undefined4 *)(iVar7 + 0x10) = puVar13[4]" (pointer_expression "*(undefined4 *)(iVar7 + 0x10)" * (cast_expression "(undefined4 *)(iVar7 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) )))) = (subscript_expression "puVar13[4]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }" else (compound_statement "{\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }" { (if_statement "if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }" if (parenthesized_expression "(puVar16 != (undefined4 *)0x0)" ( (binary_expression "puVar16 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puVar16[4] = puVar13[4];\n    }" { (expression_statement "puVar16[4] = puVar13[4];" (assignment_expression "puVar16[4] = puVar13[4]" (subscript_expression "puVar16[4]" identifier [ number_literal ]) = (subscript_expression "puVar13[4]" identifier [ number_literal ])) ;) })) (expression_statement "puVar30 = (undefined4 *)puVar13[2];" (assignment_expression "puVar30 = (undefined4 *)puVar13[2]" identifier = (cast_expression "(undefined4 *)puVar13[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[2]" identifier [ number_literal ]))) ;) (if_statement "if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }" if (parenthesized_expression "(puVar30 == (undefined4 *)0x0)" ( (binary_expression "puVar30 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }" { (if_statement "if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }" if (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" ( (binary_expression "puVar16 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }" { (expression_statement "puVar16 = (undefined4 *)*puVar13;" (assignment_expression "puVar16 = (undefined4 *)*puVar13" identifier = (cast_expression "(undefined4 *)*puVar13" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar13" * identifier))) ;) (while_statement "while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }" { (expression_statement "puVar30 = puVar16;" (assignment_expression "puVar30 = puVar16" identifier = identifier) ;) (if_statement "if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;" if (parenthesized_expression "(puVar30 == (undefined4 *)0x0)" ( (binary_expression "puVar30 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00028398;" goto statement_identifier ;)) (expression_statement "puVar16 = (undefined4 *)puVar30[2];" (assignment_expression "puVar16 = (undefined4 *)puVar30[2]" identifier = (cast_expression "(undefined4 *)puVar30[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar30[2]" identifier [ number_literal ]))) ;) (if_statement "if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;" if (parenthesized_expression "((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13))" ( (binary_expression "(puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)" (parenthesized_expression "(puVar16 != (undefined4 *)0x0)" ( (binary_expression "puVar16 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(puVar16 != puVar13)" ( (binary_expression "puVar16 != puVar13" identifier != identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "puVar16 = (undefined4 *)*puVar30;" (assignment_expression "puVar16 = (undefined4 *)*puVar30" identifier = (cast_expression "(undefined4 *)*puVar30" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar30" * identifier))) ;) (expression_statement "puVar13 = puVar30;" (assignment_expression "puVar13 = puVar30" identifier = identifier) ;) })) })) }) (else_clause "else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }" else (compound_statement "{\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }" { (if_statement "if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }" if (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" ( (binary_expression "puVar16 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar16 = puVar30;\n      }" { (expression_statement "puVar16 = puVar30;" (assignment_expression "puVar16 = puVar30" identifier = identifier) ;) })) (expression_statement "puVar30[4] = puVar13[4];" (assignment_expression "puVar30[4] = puVar13[4]" (subscript_expression "puVar30[4]" identifier [ number_literal ]) = (subscript_expression "puVar13[4]" identifier [ number_literal ])) ;) }))) })))) (while_statement "while( true ) {\n    cVar17 = *(char *)(puVar16 + 6);\n    puVar30 = puVar16 + 1;\n    puVar13 = puVar16;\n    puVar16 = (undefined4 *)*puVar30;\n    if (cVar17 != '\v') break;\nLAB_00028283:\n    puVar16[4] = puVar13;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    cVar17 = *(char *)(puVar16 + 6);\n    puVar30 = puVar16 + 1;\n    puVar13 = puVar16;\n    puVar16 = (undefined4 *)*puVar30;\n    if (cVar17 != '\v') break;\nLAB_00028283:\n    puVar16[4] = puVar13;\n  }" { (expression_statement "cVar17 = *(char *)(puVar16 + 6);" (assignment_expression "cVar17 = *(char *)(puVar16 + 6)" identifier = (pointer_expression "*(char *)(puVar16 + 6)" * (cast_expression "(char *)(puVar16 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 6)" ( (binary_expression "puVar16 + 6" identifier + number_literal) ))))) ;) (expression_statement "puVar30 = puVar16 + 1;" (assignment_expression "puVar30 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = puVar16;" (assignment_expression "puVar13 = puVar16" identifier = identifier) ;) (expression_statement "puVar16 = (undefined4 *)*puVar30;" (assignment_expression "puVar16 = (undefined4 *)*puVar30" identifier = (cast_expression "(undefined4 *)*puVar30" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar30" * identifier))) ;) (if_statement "if (cVar17 != '\v') break;" if (parenthesized_expression "(cVar17 != '\v')" ( (binary_expression "cVar17 != '\v'" identifier != (char_literal "'\v'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00028283:\n    puVar16[4] = puVar13;" statement_identifier : (expression_statement "puVar16[4] = puVar13;" (assignment_expression "puVar16[4] = puVar13" (subscript_expression "puVar16[4]" identifier [ number_literal ]) = identifier) ;)) })) (goto_statement "goto LAB_00028250;" goto statement_identifier ;) (while_statement "while (puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0) {\n    while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }\n  }" while (parenthesized_expression "(puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0)" ( (comma_expression "puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0" (assignment_expression "puVar13 = (undefined4 *)*puVar30" identifier = (cast_expression "(undefined4 *)*puVar30" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar30" * identifier))) , (comma_expression "puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0" (assignment_expression "puVar16 = puVar30" identifier = identifier) , (binary_expression "(undefined4 *)*puVar30 != (undefined4 *)0x0" (cast_expression "(undefined4 *)*puVar30" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar30" * identifier)) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) )) (compound_statement "{\n    while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }\n  }" { (while_statement "while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }" { (expression_statement "puVar30 = puVar13;" (assignment_expression "puVar30 = puVar13" identifier = identifier) ;) (expression_statement "puVar8 = (undefined4 *)puVar30[2];" (assignment_expression "puVar8 = (undefined4 *)puVar30[2]" identifier = (cast_expression "(undefined4 *)puVar30[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar30[2]" identifier [ number_literal ]))) ;) (expression_statement "bVar35 = puVar8 == puVar16;" (assignment_expression "bVar35 = puVar8 == puVar16" identifier = (binary_expression "puVar8 == puVar16" identifier == identifier)) ;) (if_statement "if (bVar35 || puVar8 == (undefined4 *)0x0) break;" if (parenthesized_expression "(bVar35 || puVar8 == (undefined4 *)0x0)" ( (binary_expression "bVar35 || puVar8 == (undefined4 *)0x0" identifier || (binary_expression "puVar8 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);" statement_identifier : (do_statement "do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);" do (compound_statement "{\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      }" { (expression_statement "bVar37 = *(byte *)(puVar8 + 6);" (assignment_expression "bVar37 = *(byte *)(puVar8 + 6)" identifier = (pointer_expression "*(byte *)(puVar8 + 6)" * (cast_expression "(byte *)(puVar8 + 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 6)" ( (binary_expression "puVar8 + 6" identifier + number_literal) ))))) ;) (if_statement "if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }" if (parenthesized_expression "(bVar37 < 0x11)" ( (binary_expression "bVar37 < 0x11" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }" { (expression_statement "iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();" (assignment_expression "iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ()" identifier = (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))" ( (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669)" * (cast_expression "(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669)" ( (binary_expression "*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669" (binary_expression "*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x57dd + (uint)bVar37 * 4)" ( (binary_expression "unaff_EDI + 0x57dd + (uint)bVar37 * 4" (binary_expression "unaff_EDI + 0x57dd" identifier + number_literal) + (binary_expression "(uint)bVar37 * 4" (cast_expression "(uint)bVar37" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar7;" return identifier ;) })) (if_statement "if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }" if (parenthesized_expression "((bVar37 & 8) != 0)" ( (binary_expression "(bVar37 & 8) != 0" (parenthesized_expression "(bVar37 & 8)" ( (binary_expression "bVar37 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }" { (expression_statement "__assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));" (call_expression "__assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895))" identifier (argument_list "((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895))" ( (cast_expression "(char *)(unaff_EDI + 0x5ac9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x5ac9)" ( (binary_expression "unaff_EDI + 0x5ac9" identifier + number_literal) ))) , (cast_expression "(char *)(unaff_EDI + 0x503d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x503d)" ( (binary_expression "unaff_EDI + 0x503d" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x5895)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x5895)" ( (binary_expression "unaff_EDI + 0x5895" identifier + number_literal) ))) ))) ;) })) (expression_statement "*(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);" (assignment_expression "*(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c)" (pointer_expression "*(undefined4 *)(local_b0[3] + puVar8[7] * 4)" * (cast_expression "(undefined4 *)(local_b0[3] + puVar8[7] * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0[3] + puVar8[7] * 4)" ( (binary_expression "local_b0[3] + puVar8[7] * 4" (subscript_expression "local_b0[3]" identifier [ number_literal ]) + (binary_expression "puVar8[7] * 4" (subscript_expression "puVar8[7]" identifier [ number_literal ]) * number_literal)) )))) = (pointer_expression "*(undefined4 *)(puVar8[4] + 0x1c)" * (cast_expression "(undefined4 *)(puVar8[4] + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8[4] + 0x1c)" ( (binary_expression "puVar8[4] + 0x1c" (subscript_expression "puVar8[4]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "puVar16 = (undefined4 *)puVar8[1];" (assignment_expression "puVar16 = (undefined4 *)puVar8[1]" identifier = (cast_expression "(undefined4 *)puVar8[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar13 = puVar8;" (assignment_expression "puVar13 = puVar8" identifier = identifier) ;) (expression_statement "puVar8 = puVar16;" (assignment_expression "puVar8 = puVar16" identifier = identifier) ;) }) while (parenthesized_expression "(puVar16 != (undefined4 *)0x0)" ( (binary_expression "puVar16 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) })) })) (expression_statement "bVar36 = false;" (assignment_expression "bVar36 = false" identifier = false) ;) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n    if (local_b0[2] == iVar19) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }\n  } while( true );" do (compound_statement "{\n    if (local_b0[2] == iVar19) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }\n  }" { (if_statement "if (local_b0[2] == iVar19) goto LAB_000284fa;" if (parenthesized_expression "(local_b0[2] == iVar19)" ( (binary_expression "local_b0[2] == iVar19" (subscript_expression "local_b0[2]" identifier [ number_literal ]) == identifier) )) (goto_statement "goto LAB_000284fa;" goto statement_identifier ;)) (labeled_statement "LAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }" statement_identifier : (while_statement "while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }" { (expression_statement "iVar20 = iVar19 * 0xc;" (assignment_expression "iVar20 = iVar19 * 0xc" identifier = (binary_expression "iVar19 * 0xc" identifier * number_literal)) ;) (if_statement "if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;" if (parenthesized_expression "(*(int *)(local_b0[6] + 4 + iVar20) != 0)" ( (binary_expression "*(int *)(local_b0[6] + 4 + iVar20) != 0" (pointer_expression "*(int *)(local_b0[6] + 4 + iVar20)" * (cast_expression "(int *)(local_b0[6] + 4 + iVar20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0[6] + 4 + iVar20)" ( (binary_expression "local_b0[6] + 4 + iVar20" (binary_expression "local_b0[6] + 4" (subscript_expression "local_b0[6]" identifier [ number_literal ]) + number_literal) + identifier) )))) != number_literal) )) (goto_statement "goto code_r0x000284f2;" goto statement_identifier ;)) (expression_statement "iVar7 = FUN_0001fb10(1);" (assignment_expression "iVar7 = FUN_0001fb10(1)" identifier = (call_expression "FUN_0001fb10(1)" identifier (argument_list "(1)" ( number_literal )))) ;) (if_statement "if (iVar7 != 0) goto LAB_00028335;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00028335;" goto statement_identifier ;)) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (if_statement "if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;" if (parenthesized_expression "(*(int *)(local_b0[6] + 4 + iVar20) != 0)" ( (binary_expression "*(int *)(local_b0[6] + 4 + iVar20) != 0" (pointer_expression "*(int *)(local_b0[6] + 4 + iVar20)" * (cast_expression "(int *)(local_b0[6] + 4 + iVar20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0[6] + 4 + iVar20)" ( (binary_expression "local_b0[6] + 4 + iVar20" (binary_expression "local_b0[6] + 4" (subscript_expression "local_b0[6]" identifier [ number_literal ]) + number_literal) + identifier) )))) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "free(local_78);" (call_expression "free(local_78)" identifier (argument_list "(local_78)" ( identifier ))) ;) (expression_statement "bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;" (assignment_expression "bVar36 = bVar35 || puVar8 == (undefined4 *)0x0" identifier = (binary_expression "bVar35 || puVar8 == (undefined4 *)0x0" identifier || (binary_expression "puVar8 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ;) (if_statement "if (local_b0[2] == iVar19) goto LAB_00028505;" if (parenthesized_expression "(local_b0[2] == iVar19)" ( (binary_expression "local_b0[2] == iVar19" (subscript_expression "local_b0[2]" identifier [ number_literal ]) == identifier) )) (goto_statement "goto LAB_00028505;" goto statement_identifier ;)) }))) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "code_r0x000284f2:\n  iVar19 = iVar19 + 1;" statement_identifier : (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;)) (if_statement "if (local_b0[2] == iVar19) {\nLAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    iVar19 = 0;\n    bVar36 = false;\n  }" if (parenthesized_expression "(local_b0[2] == iVar19)" ( (binary_expression "local_b0[2] == iVar19" (subscript_expression "local_b0[2]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\nLAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    iVar19 = 0;\n    bVar36 = false;\n  }" { (labeled_statement "LAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }" statement_identifier : (if_statement "if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }" if (parenthesized_expression "(!bVar36)" ( (unary_expression "!bVar36" ! identifier) )) (compound_statement "{\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }" { (if_statement "if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;" if (parenthesized_expression "(((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0))" ( (binary_expression "((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)" (parenthesized_expression "((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0))" ( (binary_expression "(((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)" (parenthesized_expression "(((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0))" ( (binary_expression "((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)" (parenthesized_expression "((*(byte *)(piVar3 + 7) & 0x10) != 0)" ( (binary_expression "(*(byte *)(piVar3 + 7) & 0x10) != 0" (parenthesized_expression "(*(byte *)(piVar3 + 7) & 0x10)" ( (binary_expression "*(byte *)(piVar3 + 7) & 0x10" (pointer_expression "*(byte *)(piVar3 + 7)" * (cast_expression "(byte *)(piVar3 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 7)" ( (binary_expression "piVar3 + 7" identifier + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(piVar3[6] == 0)" ( (binary_expression "piVar3[6] == 0" (subscript_expression "piVar3[6]" identifier [ number_literal ]) == number_literal) ))) )) || (parenthesized_expression "((*(byte *)(local_b0 + 0x16) & 1) == 0)" ( (binary_expression "(*(byte *)(local_b0 + 0x16) & 1) == 0" (parenthesized_expression "(*(byte *)(local_b0 + 0x16) & 1)" ( (binary_expression "*(byte *)(local_b0 + 0x16) & 1" (pointer_expression "*(byte *)(local_b0 + 0x16)" * (cast_expression "(byte *)(local_b0 + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + 0x16)" ( (binary_expression "local_b0 + 0x16" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(local_b0[0x13] == 0)" ( (binary_expression "local_b0[0x13] == 0" (subscript_expression "local_b0[0x13]" identifier [ number_literal ]) == number_literal) ))) )) (goto_statement "goto LAB_00028860;" goto statement_identifier ;)) (expression_statement "pvVar9 = malloc(iVar19 * 0xc);" (assignment_expression "pvVar9 = malloc(iVar19 * 0xc)" identifier = (call_expression "malloc(iVar19 * 0xc)" identifier (argument_list "(iVar19 * 0xc)" ( (binary_expression "iVar19 * 0xc" identifier * number_literal) )))) ;) (expression_statement "local_b0[7] = (int)pvVar9;" (assignment_expression "local_b0[7] = (int)pvVar9" (subscript_expression "local_b0[7]" identifier [ number_literal ]) = (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }" if (parenthesized_expression "(pvVar9 != (void *)0x0)" ( (binary_expression "pvVar9 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }" { (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (if_statement "if (iVar19 != 0) goto LAB_0002875b;" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002875b;" goto statement_identifier ;)) (goto_statement "goto LAB_00028860;" goto statement_identifier ;) })) (expression_statement "local_88 = 0xc;" (assignment_expression "local_88 = 0xc" identifier = number_literal) ;) (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (goto_statement "goto LAB_00027c60;" goto statement_identifier ;) }))) (labeled_statement "LAB_00028505:\n    iVar19 = 0;" statement_identifier : (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;)) (expression_statement "bVar36 = false;" (assignment_expression "bVar36 = false" identifier = false) ;) })) (goto_statement "goto LAB_000284dd;" goto statement_identifier ;) (labeled_statement "LAB_00028330:\n  iVar7 = 0xc;" statement_identifier : (expression_statement "iVar7 = 0xc;" (assignment_expression "iVar7 = 0xc" identifier = number_literal) ;)) (labeled_statement "LAB_00028335:\n  local_b0 = (int *)*piVar3;" statement_identifier : (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;)) (expression_statement "local_88 = iVar7;" (assignment_expression "local_88 = iVar7" identifier = identifier) ;) (labeled_statement "LAB_00027c60:\n  puVar8 = (undefined4 *)local_b0[0xe];" statement_identifier : (expression_statement "puVar8 = (undefined4 *)local_b0[0xe];" (assignment_expression "puVar8 = (undefined4 *)local_b0[0xe]" identifier = (cast_expression "(undefined4 *)local_b0[0xe]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b0[0xe]" identifier [ number_literal ]))) ;)) (while_statement "while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }" while (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }" { (expression_statement "puVar16 = (undefined4 *)*puVar8;" (assignment_expression "puVar16 = (undefined4 *)*puVar8" identifier = (cast_expression "(undefined4 *)*puVar8" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "free(puVar8);" (call_expression "free(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) ;) (expression_statement "puVar8 = puVar16;" (assignment_expression "puVar8 = puVar16" identifier = identifier) ;) })) (expression_statement "local_b0[0xe] = 0;" (assignment_expression "local_b0[0xe] = 0" (subscript_expression "local_b0[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_b0[0x10] = 0x1f;" (assignment_expression "local_b0[0x10] = 0x1f" (subscript_expression "local_b0[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_b0[0xd] = 0;" (assignment_expression "local_b0[0xd] = 0" (subscript_expression "local_b0[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "free((void *)local_b0[4]);" (call_expression "free((void *)local_b0[4])" identifier (argument_list "((void *)local_b0[4])" ( (cast_expression "(void *)local_b0[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b0[4]" identifier [ number_literal ])) ))) ;) (expression_statement "local_b0[4] = 0;" (assignment_expression "local_b0[4] = 0" (subscript_expression "local_b0[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "free(local_6c);" (call_expression "free(local_6c)" identifier (argument_list "(local_6c)" ( identifier ))) ;) (expression_statement "free(local_68);" (call_expression "free(local_68)" identifier (argument_list "(local_68)" ( identifier ))) ;) (if_statement "if (local_29 != '\0') {\n    free(local_70);\n  }" if (parenthesized_expression "(local_29 != '\0')" ( (binary_expression "local_29 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    free(local_70);\n  }" { (expression_statement "free(local_70);" (call_expression "free(local_70)" identifier (argument_list "(local_70)" ( identifier ))) ;) })) (goto_statement "goto LAB_000282d8;" goto statement_identifier ;) (labeled_statement "LAB_0002897d:\n  do {\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  } while (uVar18 < uVar31);" statement_identifier : (do_statement "do {\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  } while (uVar18 < uVar31);" do (compound_statement "{\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  }" { (expression_statement "uVar23 = uVar31 + uVar18 >> 1;" (assignment_expression "uVar23 = uVar31 + uVar18 >> 1" identifier = (binary_expression "uVar31 + uVar18 >> 1" (binary_expression "uVar31 + uVar18" identifier + identifier) >> number_literal)) ;) (if_statement "if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }" if (parenthesized_expression "(iVar19 <= *(int *)((int)local_78 + uVar23 * 4))" ( (binary_expression "iVar19 <= *(int *)((int)local_78 + uVar23 * 4)" identifier <= (pointer_expression "*(int *)((int)local_78 + uVar23 * 4)" * (cast_expression "(int *)((int)local_78 + uVar23 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_78 + uVar23 * 4)" ( (binary_expression "(int)local_78 + uVar23 * 4" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar23 * 4" identifier * number_literal)) ))))) )) (compound_statement "{\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }" { (if_statement "if (uVar23 <= uVar18) break;" if (parenthesized_expression "(uVar23 <= uVar18)" ( (binary_expression "uVar23 <= uVar18" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar32 = uVar18 + uVar23 >> 1;" (assignment_expression "uVar32 = uVar18 + uVar23 >> 1" identifier = (binary_expression "uVar18 + uVar23 >> 1" (binary_expression "uVar18 + uVar23" identifier + identifier) >> number_literal)) ;) (expression_statement "iVar20 = *(int *)((int)local_78 + uVar32 * 4);" (assignment_expression "iVar20 = *(int *)((int)local_78 + uVar32 * 4)" identifier = (pointer_expression "*(int *)((int)local_78 + uVar32 * 4)" * (cast_expression "(int *)((int)local_78 + uVar32 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_78 + uVar32 * 4)" ( (binary_expression "(int)local_78 + uVar32 * 4" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar32 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar31 = uVar23;" (assignment_expression "uVar31 = uVar23" identifier = identifier) ;) (expression_statement "uVar23 = uVar32;" (assignment_expression "uVar23 = uVar32" identifier = identifier) ;) (while_statement "while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }" while (parenthesized_expression "(iVar19 <= iVar20)" ( (binary_expression "iVar19 <= iVar20" identifier <= identifier) )) (compound_statement "{\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }" { (if_statement "if (uVar23 <= uVar18) goto LAB_000289b4;" if (parenthesized_expression "(uVar23 <= uVar18)" ( (binary_expression "uVar23 <= uVar18" identifier <= identifier) )) (goto_statement "goto LAB_000289b4;" goto statement_identifier ;)) (expression_statement "uVar32 = uVar18 + uVar23 >> 1;" (assignment_expression "uVar32 = uVar18 + uVar23 >> 1" identifier = (binary_expression "uVar18 + uVar23 >> 1" (binary_expression "uVar18 + uVar23" identifier + identifier) >> number_literal)) ;) (expression_statement "uVar31 = uVar23;" (assignment_expression "uVar31 = uVar23" identifier = identifier) ;) (expression_statement "uVar23 = uVar32;" (assignment_expression "uVar23 = uVar32" identifier = identifier) ;) (expression_statement "iVar20 = *(int *)((int)local_78 + uVar32 * 4);" (assignment_expression "iVar20 = *(int *)((int)local_78 + uVar32 * 4)" identifier = (pointer_expression "*(int *)((int)local_78 + uVar32 * 4)" * (cast_expression "(int *)((int)local_78 + uVar32 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_78 + uVar32 * 4)" ( (binary_expression "(int)local_78 + uVar32 * 4" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar32 * 4" identifier * number_literal)) ))))) ;) })) })) (expression_statement "uVar18 = uVar23 + 1;" (assignment_expression "uVar18 = uVar23 + 1" identifier = (binary_expression "uVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar18 < uVar31)" ( (binary_expression "uVar18 < uVar31" identifier < identifier) )) ;)) (labeled_statement "LAB_000289b4:\n  if (*(int *)((int)local_78 + uVar18 * 4) == iVar19) {\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }" statement_identifier : (if_statement "if (*(int *)((int)local_78 + uVar18 * 4) == iVar19) {\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }" if (parenthesized_expression "(*(int *)((int)local_78 + uVar18 * 4) == iVar19)" ( (binary_expression "*(int *)((int)local_78 + uVar18 * 4) == iVar19" (pointer_expression "*(int *)((int)local_78 + uVar18 * 4)" * (cast_expression "(int *)((int)local_78 + uVar18 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_78 + uVar18 * 4)" ( (binary_expression "(int)local_78 + uVar18 * 4" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar18 * 4" identifier * number_literal)) )))) == identifier) )) (compound_statement "{\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }" { (labeled_statement "LAB_00028908:\n    iVar7 = iVar7 + 1;" statement_identifier : (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;)) (expression_statement "iVar19 = local_7c;" (assignment_expression "iVar19 = local_7c" identifier = identifier) ;) (if_statement "if (local_7c <= iVar7) goto LAB_000289f2;" if (parenthesized_expression "(local_7c <= iVar7)" ( (binary_expression "local_7c <= iVar7" identifier <= identifier) )) (goto_statement "goto LAB_000289f2;" goto statement_identifier ;)) (goto_statement "goto LAB_00028917;" goto statement_identifier ;) }))) (expression_statement "iVar7 = FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc);" (assignment_expression "iVar7 = FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc)" identifier = (call_expression "FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc)" identifier (argument_list "(&local_80,__ptr[6] + iVar19 * 0xc)" ( (pointer_expression "&local_80" & identifier) , (binary_expression "__ptr[6] + iVar19 * 0xc" (subscript_expression "__ptr[6]" identifier [ number_literal ]) + (binary_expression "iVar19 * 0xc" identifier * number_literal)) )))) ;) (if_statement "if (iVar7 != 0) goto LAB_00028a39;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00028a39;" goto statement_identifier ;)) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (expression_statement "iVar19 = local_7c;" (assignment_expression "iVar19 = local_7c" identifier = identifier) ;) (if_statement "if (local_7c < 2) goto LAB_000289f2;" if (parenthesized_expression "(local_7c < 2)" ( (binary_expression "local_7c < 2" identifier < number_literal) )) (goto_statement "goto LAB_000289f2;" goto statement_identifier ;)) (goto_statement "goto LAB_00028917;" goto statement_identifier ;) (labeled_statement "LAB_0002875b:\n  while( true ) {\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }" statement_identifier : (while_statement "while( true ) {\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }" { (expression_statement "puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);" (assignment_expression "puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc)" identifier = (cast_expression "(undefined4 *)((int)pvVar9 + uVar31 * 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar9 + uVar31 * 0xc)" ( (binary_expression "(int)pvVar9 + uVar31 * 0xc" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "uVar31 * 0xc" identifier * number_literal)) )))) ;) (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" * identifier) = number_literal) ;) (expression_statement "puVar8[1] = 0;" (assignment_expression "puVar8[1] = 0" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[2] = 0;" (assignment_expression "puVar8[2] = 0" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar23 = local_b0[2];" (assignment_expression "uVar23 = local_b0[2]" identifier = (subscript_expression "local_b0[2]" identifier [ number_literal ])) ;) (if_statement "if (uVar23 <= uVar31 + 1) break;" if (parenthesized_expression "(uVar23 <= uVar31 + 1)" ( (binary_expression "uVar23 <= uVar31 + 1" identifier <= (binary_expression "uVar31 + 1" identifier + number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pvVar9 = (void *)local_b0[7];" (assignment_expression "pvVar9 = (void *)local_b0[7]" identifier = (cast_expression "(void *)local_b0[7]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b0[7]" identifier [ number_literal ]))) ;) (expression_statement "uVar31 = uVar31 + 1;" (assignment_expression "uVar31 = uVar31 + 1" identifier = (binary_expression "uVar31 + 1" identifier + number_literal)) ;) }))) (if_statement "if (uVar23 != 0) {\n    local_9c = 0;\n    local_b0 = (int *)local_b0[6];\n    do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);\n  }" if (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) )) (compound_statement "{\n    local_9c = 0;\n    local_b0 = (int *)local_b0[6];\n    do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);\n  }" { (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) (expression_statement "local_b0 = (int *)local_b0[6];" (assignment_expression "local_b0 = (int *)local_b0[6]" identifier = (cast_expression "(int *)local_b0[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b0[6]" identifier [ number_literal ]))) ;) (do_statement "do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);" do (compound_statement "{\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    }" { (expression_statement "iVar19 = (int)local_b0 + local_9c * 0xc;" (assignment_expression "iVar19 = (int)local_b0 + local_9c * 0xc" identifier = (binary_expression "(int)local_b0 + local_9c * 0xc" (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "local_9c * 0xc" identifier * number_literal))) ;) (expression_statement "iVar7 = *(int *)(iVar19 + 8);" (assignment_expression "iVar7 = *(int *)(iVar19 + 8)" identifier = (pointer_expression "*(int *)(iVar19 + 8)" * (cast_expression "(int *)(iVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 8)" ( (binary_expression "iVar19 + 8" identifier + number_literal) ))))) ;) (if_statement "if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }" if (parenthesized_expression "(0 < *(int *)(iVar19 + 4))" ( (binary_expression "0 < *(int *)(iVar19 + 4)" number_literal < (pointer_expression "*(int *)(iVar19 + 4)" * (cast_expression "(int *)(iVar19 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 4)" ( (binary_expression "iVar19 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (do_statement "do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));" do (compound_statement "{\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        }" { (expression_statement "piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);" (assignment_expression "piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc)" identifier = (cast_expression "(int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc)" ( (binary_expression "piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc" (subscript_expression "piVar28[7]" identifier [ number_literal ]) + (binary_expression "*(int *)(iVar7 + iVar19 * 4) * 0xc" (pointer_expression "*(int *)(iVar7 + iVar19 * 4)" * (cast_expression "(int *)(iVar7 + iVar19 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + iVar19 * 4)" ( (binary_expression "iVar7 + iVar19 * 4" identifier + (binary_expression "iVar19 * 4" identifier * number_literal)) )))) * number_literal)) )))) ;) (expression_statement "iVar20 = piVar21[1];" (assignment_expression "iVar20 = piVar21[1]" identifier = (subscript_expression "piVar21[1]" identifier [ number_literal ])) ;) (expression_statement "pvVar9 = (void *)piVar21[2];" (assignment_expression "pvVar9 = (void *)piVar21[2]" identifier = (cast_expression "(void *)piVar21[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar21[2]" identifier [ number_literal ]))) ;) (if_statement "if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }" if (parenthesized_expression "(*piVar21 == iVar20)" ( (binary_expression "*piVar21 == iVar20" (pointer_expression "*piVar21" * identifier) == identifier) )) (compound_statement "{\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }" { (expression_statement "*piVar21 = (iVar20 + 1) * 2;" (assignment_expression "*piVar21 = (iVar20 + 1) * 2" (pointer_expression "*piVar21" * identifier) = (binary_expression "(iVar20 + 1) * 2" (parenthesized_expression "(iVar20 + 1)" ( (binary_expression "iVar20 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);" (assignment_expression "pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8)" identifier = (call_expression "realloc(pvVar9,(iVar20 + 1) * 8)" identifier (argument_list "(pvVar9,(iVar20 + 1) * 8)" ( identifier , (binary_expression "(iVar20 + 1) * 8" (parenthesized_expression "(iVar20 + 1)" ( (binary_expression "iVar20 + 1" identifier + number_literal) )) * number_literal) )))) ;) (if_statement "if (pvVar9 == (void *)0x0) goto LAB_00028330;" if (parenthesized_expression "(pvVar9 == (void *)0x0)" ( (binary_expression "pvVar9 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00028330;" goto statement_identifier ;)) (expression_statement "local_b0 = (int *)piVar28[6];" (assignment_expression "local_b0 = (int *)piVar28[6]" identifier = (cast_expression "(int *)piVar28[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar28[6]" identifier [ number_literal ]))) ;) (expression_statement "iVar20 = piVar21[1];" (assignment_expression "iVar20 = piVar21[1]" identifier = (subscript_expression "piVar21[1]" identifier [ number_literal ])) ;) (expression_statement "piVar21[2] = (int)pvVar9;" (assignment_expression "piVar21[2] = (int)pvVar9" (subscript_expression "piVar21[2]" identifier [ number_literal ]) = (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "piVar21[1] = iVar20 + 1;" (assignment_expression "piVar21[1] = iVar20 + 1" (subscript_expression "piVar21[1]" identifier [ number_literal ]) = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "*(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;" (assignment_expression "*(uint *)((int)pvVar9 + iVar20 * 4) = local_9c" (pointer_expression "*(uint *)((int)pvVar9 + iVar20 * 4)" * (cast_expression "(uint *)((int)pvVar9 + iVar20 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar9 + iVar20 * 4)" ( (binary_expression "(int)pvVar9 + iVar20 * 4" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar20 * 4" identifier * number_literal)) )))) = identifier) ;) }) while (parenthesized_expression "(iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc))" ( (binary_expression "iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc)" identifier < (pointer_expression "*(int *)((int)local_b0 + 4 + local_9c * 0xc)" * (cast_expression "(int *)((int)local_b0 + 4 + local_9c * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_b0 + 4 + local_9c * 0xc)" ( (binary_expression "(int)local_b0 + 4 + local_9c * 0xc" (binary_expression "(int)local_b0 + 4" (cast_expression "(int)local_b0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) + (binary_expression "local_9c * 0xc" identifier * number_literal)) ))))) )) ;) (expression_statement "uVar23 = piVar28[2];" (assignment_expression "uVar23 = piVar28[2]" identifier = (subscript_expression "piVar28[2]" identifier [ number_literal ])) ;) })) (expression_statement "local_9c = local_9c + 1;" (assignment_expression "local_9c = local_9c + 1" identifier = (binary_expression "local_9c + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_9c < uVar23)" ( (binary_expression "local_9c < uVar23" identifier < identifier) )) ;) })) (labeled_statement "LAB_00028860:\n  local_88 = 0;" statement_identifier : (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;)) (if_statement "if (((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0)) {\n    if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    \n        abort();\n      }\n                    \n                    \n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }\n    __ptr[0x17] = 1;\n    *(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;\n  }" if (parenthesized_expression "(((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0))" ( (binary_expression "((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0)" (parenthesized_expression "((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0)" ( (binary_expression "(*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0" (parenthesized_expression "(*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0)" ( (binary_expression "*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0" (binary_expression "*(byte *)(__ptr + 0x16) >> 2" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) >> number_literal) & (binary_expression "uVar18 == 0" identifier == number_literal)) )) != number_literal) )) && (parenthesized_expression "(piVar3[5] == 0)" ( (binary_expression "piVar3[5] == 0" (subscript_expression "piVar3[5]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    \n        abort();\n      }\n                    \n                    \n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }\n    __ptr[0x17] = 1;\n    *(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;\n  }" { (if_statement "if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    \n        abort();\n      }\n                    \n                    \n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }" if (parenthesized_expression "(__ptr[2] != 0)" ( (binary_expression "__ptr[2] != 0" (subscript_expression "__ptr[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    \n        abort();\n      }\n                    \n                    \n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }" { (if_statement "if (0xc < *(byte *)(*__ptr + 4)) {\n                    \n        abort();\n      }" if (parenthesized_expression "(0xc < *(byte *)(*__ptr + 4))" ( (binary_expression "0xc < *(byte *)(*__ptr + 4)" number_literal < (pointer_expression "*(byte *)(*__ptr + 4)" * (cast_expression "(byte *)(*__ptr + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*__ptr + 4)" ( (binary_expression "*__ptr + 4" (pointer_expression "*__ptr" * identifier) + number_literal) ))))) )) (compound_statement "{\n                    \n        abort();\n      }" { (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();" (assignment_expression "iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))()" identifier = (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))" ( (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669)" * (cast_expression "(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669)" ( (binary_expression "*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669" (binary_expression "*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4)" * (cast_expression "(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4)" ( (binary_expression "unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4" (binary_expression "unaff_EDI + 0x5821" identifier + number_literal) + (binary_expression "(uint)*(byte *)(*__ptr + 4) * 4" (binary_expression "(uint)*(byte *)(*__ptr + 4)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*__ptr + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*__ptr + 4)" ( (binary_expression "*__ptr + 4" (pointer_expression "*__ptr" * identifier) + number_literal) )))) * number_literal)) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar7;" return identifier ;) })) (expression_statement "__ptr[0x17] = 1;" (assignment_expression "__ptr[0x17] = 1" (subscript_expression "__ptr[0x17]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;" (assignment_expression "*(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) = (binary_expression "(0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9" (binary_expression "(0 < __ptr[0x13]) * '\x02'" (parenthesized_expression "(0 < __ptr[0x13])" ( (binary_expression "0 < __ptr[0x13]" number_literal < (subscript_expression "__ptr[0x13]" identifier [ number_literal ])) )) * (char_literal "'\x02'" ' escape_sequence ')) | (binary_expression "*(byte *)(__ptr + 0x16) & 0xf9" (pointer_expression "*(byte *)(__ptr + 0x16)" * (cast_expression "(byte *)(__ptr + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr + 0x16)" ( (binary_expression "__ptr + 0x16" identifier + number_literal) )))) & number_literal))) ;) })) (expression_statement "iVar7 = *(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c);" (assignment_expression "iVar7 = *(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c)" identifier = (pointer_expression "*(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c)" * (cast_expression "(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(__ptr[0xd] + 0xc) + 0x1c)" ( (binary_expression "*(int *)(__ptr[0xd] + 0xc) + 0x1c" (pointer_expression "*(int *)(__ptr[0xd] + 0xc)" * (cast_expression "(int *)(__ptr[0xd] + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__ptr[0xd] + 0xc)" ( (binary_expression "__ptr[0xd] + 0xc" (subscript_expression "__ptr[0xd]" identifier [ number_literal ]) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "__ptr[0x12] = iVar7;" (assignment_expression "__ptr[0x12] = iVar7" (subscript_expression "__ptr[0x12]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = __ptr[6] + iVar7 * 0xc;" (assignment_expression "iVar7 = __ptr[6] + iVar7 * 0xc" identifier = (binary_expression "__ptr[6] + iVar7 * 0xc" (subscript_expression "__ptr[6]" identifier [ number_literal ]) + (binary_expression "iVar7 * 0xc" identifier * number_literal))) ;) (expression_statement "iVar19 = *(int *)(iVar7 + 4);" (assignment_expression "iVar19 = *(int *)(iVar7 + 4)" identifier = (pointer_expression "*(int *)(iVar7 + 4)" * (cast_expression "(int *)(iVar7 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar19 < 1) {\n    local_80 = 0;\n    local_7c = 0;\n    local_78 = (void *)0x0;\n    local_84 = 0;\nLAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);\n    __ptr[9] = iVar19;\n    iVar7 = local_84;\n    if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }\n  }\n  else {\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }" if (parenthesized_expression "(iVar19 < 1)" ( (binary_expression "iVar19 < 1" identifier < number_literal) )) (compound_statement "{\n    local_80 = 0;\n    local_7c = 0;\n    local_78 = (void *)0x0;\n    local_84 = 0;\nLAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);\n    __ptr[9] = iVar19;\n    iVar7 = local_84;\n    if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }\n  }" { (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;) (expression_statement "local_78 = (void *)0x0;" (assignment_expression "local_78 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);" statement_identifier : (expression_statement "iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);" (assignment_expression "iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0)" identifier = (call_expression "FUN_0001c950(&local_84,__ptr,&local_80,0)" identifier (argument_list "(&local_84,__ptr,&local_80,0)" ( (pointer_expression "&local_84" & identifier) , identifier , (pointer_expression "&local_80" & identifier) , number_literal )))) ;)) (expression_statement "__ptr[9] = iVar19;" (assignment_expression "__ptr[9] = iVar19" (subscript_expression "__ptr[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = local_84;" (assignment_expression "iVar7 = local_84" identifier = identifier) ;) (if_statement "if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }" { (if_statement "if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }" if (parenthesized_expression "(*(char *)(iVar19 + 0x34) < '\0')" ( (binary_expression "*(char *)(iVar19 + 0x34) < '\0'" (pointer_expression "*(char *)(iVar19 + 0x34)" * (cast_expression "(char *)(iVar19 + 0x34)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x34)" ( (binary_expression "iVar19 + 0x34" identifier + number_literal) )))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }" { (expression_statement "iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);" (assignment_expression "iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1)" identifier = (call_expression "FUN_0001c950(&local_84,__ptr,&local_80,1)" identifier (argument_list "(&local_84,__ptr,&local_80,1)" ( (pointer_expression "&local_84" & identifier) , identifier , (pointer_expression "&local_80" & identifier) , number_literal )))) ;) (expression_statement "__ptr[10] = iVar7;" (assignment_expression "__ptr[10] = iVar7" (subscript_expression "__ptr[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);" (assignment_expression "iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2)" identifier = (call_expression "FUN_0001c950(&local_84,__ptr,&local_80,2)" identifier (argument_list "(&local_84,__ptr,&local_80,2)" ( (pointer_expression "&local_84" & identifier) , identifier , (pointer_expression "&local_80" & identifier) , number_literal )))) ;) (expression_statement "__ptr[0xb] = iVar7;" (assignment_expression "__ptr[0xb] = iVar7" (subscript_expression "__ptr[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);" (assignment_expression "iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6)" identifier = (call_expression "FUN_0001c950(&local_84,__ptr,&local_80,6)" identifier (argument_list "(&local_84,__ptr,&local_80,6)" ( (pointer_expression "&local_84" & identifier) , identifier , (pointer_expression "&local_80" & identifier) , number_literal )))) ;) (expression_statement "__ptr[0xc] = iVar19;" (assignment_expression "__ptr[0xc] = iVar19" (subscript_expression "__ptr[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = local_84;" (assignment_expression "iVar7 = local_84" identifier = identifier) ;) (if_statement "if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;" if (parenthesized_expression "(((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0))" ( (binary_expression "((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)" (parenthesized_expression "((__ptr[10] == 0) || (__ptr[0xb] == 0))" ( (binary_expression "(__ptr[10] == 0) || (__ptr[0xb] == 0)" (parenthesized_expression "(__ptr[10] == 0)" ( (binary_expression "__ptr[10] == 0" (subscript_expression "__ptr[10]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "(__ptr[0xb] == 0)" ( (binary_expression "__ptr[0xb] == 0" (subscript_expression "__ptr[0xb]" identifier [ number_literal ]) == number_literal) ))) )) || (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_00028a39;" goto statement_identifier ;)) }) (else_clause "else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }" else (compound_statement "{\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }" { (expression_statement "__ptr[0xc] = iVar19;" (assignment_expression "__ptr[0xc] = iVar19" (subscript_expression "__ptr[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__ptr[0xb] = iVar19;" (assignment_expression "__ptr[0xb] = iVar19" (subscript_expression "__ptr[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__ptr[10] = iVar19;" (assignment_expression "__ptr[10] = iVar19" (subscript_expression "__ptr[10]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "free(local_78);" (call_expression "free(local_78)" identifier (argument_list "(local_78)" ( identifier ))) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) })) }) (else_clause "else {\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }" else (compound_statement "{\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }" { (expression_statement "local_80 = iVar19;" (assignment_expression "local_80 = iVar19" identifier = identifier) ;) (expression_statement "local_7c = iVar19;" (assignment_expression "local_7c = iVar19" identifier = identifier) ;) (expression_statement "local_78 = malloc(iVar19 * 4);" (assignment_expression "local_78 = malloc(iVar19 * 4)" identifier = (call_expression "malloc(iVar19 * 4)" identifier (argument_list "(iVar19 * 4)" ( (binary_expression "iVar19 * 4" identifier * number_literal) )))) ;) (if_statement "if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }" if (parenthesized_expression "(local_78 != (void *)0x0)" ( (binary_expression "local_78 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }" { (expression_statement "memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);" (call_expression "memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4)" identifier (argument_list "(local_78,*(void **)(iVar7 + 8),iVar19 * 4)" ( identifier , (pointer_expression "*(void **)(iVar7 + 8)" * (cast_expression "(void **)(iVar7 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) )))) , (binary_expression "iVar19 * 4" identifier * number_literal) ))) ;) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (if_statement "if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }" if (parenthesized_expression "(0 < __ptr[0x13])" ( (binary_expression "0 < __ptr[0x13]" number_literal < (subscript_expression "__ptr[0x13]" identifier [ number_literal ])) )) (compound_statement "{\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);" statement_identifier : (expression_statement "iVar20 = *(int *)((int)local_78 + iVar7 * 4);" (assignment_expression "iVar20 = *(int *)((int)local_78 + iVar7 * 4)" identifier = (pointer_expression "*(int *)((int)local_78 + iVar7 * 4)" * (cast_expression "(int *)((int)local_78 + iVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_78 + iVar7 * 4)" ( (binary_expression "(int)local_78 + iVar7 * 4" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;)) (expression_statement "piVar28 = (int *)(*__ptr + iVar20 * 8);" (assignment_expression "piVar28 = (int *)(*__ptr + iVar20 * 8)" identifier = (cast_expression "(int *)(*__ptr + iVar20 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*__ptr + iVar20 * 8)" ( (binary_expression "*__ptr + iVar20 * 8" (pointer_expression "*__ptr" * identifier) + (binary_expression "iVar20 * 8" identifier * number_literal)) )))) ;) (if_statement "if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }" if (parenthesized_expression "((char)piVar28[1] == '\x04')" ( (binary_expression "(char)piVar28[1] == '\x04'" (cast_expression "(char)piVar28[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar28[1]" identifier [ number_literal ])) == (char_literal "'\x04'" ' escape_sequence ')) )) (compound_statement "{\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }" { (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (do_statement "do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);" do (compound_statement "{\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          }" { (expression_statement "piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);" (assignment_expression "piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8)" identifier = (cast_expression "(int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8)" ( (binary_expression "*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8" (pointer_expression "*__ptr" * identifier) + (binary_expression "*(int *)((int)local_78 + iVar26 * 4) * 8" (pointer_expression "*(int *)((int)local_78 + iVar26 * 4)" * (cast_expression "(int *)((int)local_78 + iVar26 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_78 + iVar26 * 4)" ( (binary_expression "(int)local_78 + iVar26 * 4" (cast_expression "(int)local_78" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar26 * 4" identifier * number_literal)) )))) * number_literal)) )))) ;) (if_statement "if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }" if (parenthesized_expression "(((char)piVar21[1] == '\t') && (*piVar21 == *piVar28))" ( (binary_expression "((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)" (parenthesized_expression "((char)piVar21[1] == '\t')" ( (binary_expression "(char)piVar21[1] == '\t'" (cast_expression "(char)piVar21[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar21[1]" identifier [ number_literal ])) == (char_literal "'\t'" ' escape_sequence ')) )) && (parenthesized_expression "(*piVar21 == *piVar28)" ( (binary_expression "*piVar21 == *piVar28" (pointer_expression "*piVar21" * identifier) == (pointer_expression "*piVar28" * identifier)) ))) )) (compound_statement "{\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }" { (expression_statement "uVar31 = iVar19 - 1;" (assignment_expression "uVar31 = iVar19 - 1" identifier = (binary_expression "iVar19 - 1" identifier - number_literal)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);" (assignment_expression "iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8)" identifier = (pointer_expression "**(int **)(__ptr[5] + iVar20 * 0xc + 8)" * (pointer_expression "*(int **)(__ptr[5] + iVar20 * 0xc + 8)" * (cast_expression "(int **)(__ptr[5] + iVar20 * 0xc + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(__ptr[5] + iVar20 * 0xc + 8)" ( (binary_expression "__ptr[5] + iVar20 * 0xc + 8" (binary_expression "__ptr[5] + iVar20 * 0xc" (subscript_expression "__ptr[5]" identifier [ number_literal ]) + (binary_expression "iVar20 * 0xc" identifier * number_literal)) + number_literal) )))))) ;) (if_statement "if (uVar31 == 0) goto LAB_000289b4;" if (parenthesized_expression "(uVar31 == 0)" ( (binary_expression "uVar31 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000289b4;" goto statement_identifier ;)) (goto_statement "goto LAB_0002897d;" goto statement_identifier ;) })) (expression_statement "iVar26 = iVar26 + 1;" (assignment_expression "iVar26 = iVar26 + 1" identifier = (binary_expression "iVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar19 != iVar26)" ( (binary_expression "iVar19 != iVar26" identifier != identifier) )) ;) })) (goto_statement "goto LAB_00028908;" goto statement_identifier ;) })) (goto_statement "goto LAB_000289f2;" goto statement_identifier ;) })) (expression_statement "iVar7 = 0xc;" (assignment_expression "iVar7 = 0xc" identifier = number_literal) ;) }))) (labeled_statement "LAB_00028a39:\n  iVar19 = *piVar3;" statement_identifier : (expression_statement "iVar19 = *piVar3;" (assignment_expression "iVar19 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;)) (expression_statement "puVar8 = *(undefined4 **)(iVar19 + 0x38);" (assignment_expression "puVar8 = *(undefined4 **)(iVar19 + 0x38)" identifier = (pointer_expression "*(undefined4 **)(iVar19 + 0x38)" * (cast_expression "(undefined4 **)(iVar19 + 0x38)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar19 + 0x38)" ( (binary_expression "iVar19 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "local_88 = iVar7;" (assignment_expression "local_88 = iVar7" identifier = identifier) ;) (while_statement "while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }" while (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }" { (expression_statement "puVar16 = (undefined4 *)*puVar8;" (assignment_expression "puVar16 = (undefined4 *)*puVar8" identifier = (cast_expression "(undefined4 *)*puVar8" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "free(puVar8);" (call_expression "free(puVar8)" identifier (argument_list "(puVar8)" ( identifier ))) ;) (expression_statement "puVar8 = puVar16;" (assignment_expression "puVar8 = puVar16" identifier = identifier) ;) })) (expression_statement "*(undefined4 *)(iVar19 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(iVar19 + 0x38) = 0" (pointer_expression "*(undefined4 *)(iVar19 + 0x38)" * (cast_expression "(undefined4 *)(iVar19 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x38)" ( (binary_expression "iVar19 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar19 + 0x40) = 0x1f;" (assignment_expression "*(undefined4 *)(iVar19 + 0x40) = 0x1f" (pointer_expression "*(undefined4 *)(iVar19 + 0x40)" * (cast_expression "(undefined4 *)(iVar19 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x40)" ( (binary_expression "iVar19 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar19 + 0x34) = 0;" (assignment_expression "*(undefined4 *)(iVar19 + 0x34) = 0" (pointer_expression "*(undefined4 *)(iVar19 + 0x34)" * (cast_expression "(undefined4 *)(iVar19 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x34)" ( (binary_expression "iVar19 + 0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "free(*(void **)(iVar19 + 0x10));" (call_expression "free(*(void **)(iVar19 + 0x10))" identifier (argument_list "(*(void **)(iVar19 + 0x10))" ( (pointer_expression "*(void **)(iVar19 + 0x10)" * (cast_expression "(void **)(iVar19 + 0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar19 + 0x10)" ( (binary_expression "iVar19 + 0x10" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar19 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(iVar19 + 0x10) = 0" (pointer_expression "*(undefined4 *)(iVar19 + 0x10)" * (cast_expression "(undefined4 *)(iVar19 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x10)" ( (binary_expression "iVar19 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "free(local_6c);" (call_expression "free(local_6c)" identifier (argument_list "(local_6c)" ( identifier ))) ;) (expression_statement "free(local_68);" (call_expression "free(local_68)" identifier (argument_list "(local_68)" ( identifier ))) ;) (if_statement "if (local_29 != '\0') {\n    free(local_70);\n  }" if (parenthesized_expression "(local_29 != '\0')" ( (binary_expression "local_29 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    free(local_70);\n  }" { (expression_statement "free(local_70);" (call_expression "free(local_70)" identifier (argument_list "(local_70)" ( identifier ))) ;) })) (expression_statement "iVar7 = local_88;" (assignment_expression "iVar7 = local_88" identifier = identifier) ;) (if_statement "if (local_88 == 0) goto LAB_000282f4;" if (parenthesized_expression "(local_88 == 0)" ( (binary_expression "local_88 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000282f4;" goto statement_identifier ;)) (labeled_statement "LAB_000282d8:\n  FUN_0001c000();" statement_identifier : (expression_statement "FUN_0001c000();" (call_expression "FUN_0001c000()" identifier (argument_list "()" ( ))) ;)) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" * identifier) = number_literal) ;) (expression_statement "piVar3[1] = 0;" (assignment_expression "piVar3[1] = 0" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar7 = local_88;" (assignment_expression "iVar7 = local_88" identifier = identifier) ;) (labeled_statement "LAB_000282f4:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002a720();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002a720();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_0002a720();\n  }" { (expression_statement "FUN_0002a720();" (call_expression "FUN_0002a720()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar7;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE 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) ;) (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 (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (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 , 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 = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ))) ))) >> LIT)) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (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 = (call_expression IDENT (argument_list ( LIT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;)) })) (labeled_statement statement_identifier : (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 == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) | (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (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 (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (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 = (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) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (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) + IDENT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + IDENT) ))))) ))))) ;) (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) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (do_statement do (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) + IDENT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + IDENT) ))))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) })) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) ))) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT * LIT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + 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) + IDENT) )))) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ]))) ;) }) (else_clause else (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) + IDENT) )))) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ]))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT , (pointer_expression & IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_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 + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) & LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT | (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) * LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT * LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (subscript_expression IDENT [ LIT ]) ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) | (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (subscript_expression IDENT [ (subscript_expression IDENT [ LIT ]) ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) & (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))))) ;) })) (labeled_statement statement_identifier : (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression (binary_expression IDENT == IDENT) || (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 *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) })) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) }))) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;)) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) + LIT) + (binary_expression IDENT * LIT)) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) + LIT) + (binary_expression IDENT * LIT)) )))) & LIT) | (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) << LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) || IDENT) )) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression 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 *)) ) (pointer_expression * IDENT))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }))) })))) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) })) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)))) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT || (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )) (break_statement break ;)) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) + IDENT) + LIT) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , LIT , (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 (subscript_expression IDENT [ LIT ]) + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT)) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;)) })) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) + IDENT) )))) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) + IDENT) )))) != LIT) )) (break_statement break ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT || (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) (goto_statement goto statement_identifier ;)) }))) }) while (parenthesized_expression ( BOOL )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (goto_statement goto statement_identifier ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (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) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;)) (while_statement while (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 *)) ) (pointer_expression * IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (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 (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) ))))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) )))) == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) + (binary_expression IDENT * LIT)) ))))) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) & (binary_expression IDENT == LIT)) )) != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) * LIT)) )))) + IDENT) + LIT) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) * (char_literal ' escape_sequence ')) | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & 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 *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , (pointer_expression & IDENT) , LIT )))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT * LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression IDENT * LIT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) ))))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression IDENT * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) )))) * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (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 *)) ) (pointer_expression * IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int FUN_00027990(uint param_1)\n\n{\n  byte bVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  void *pvVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  void *pvVar9;\n  void *pvVar10;\n  void *pvVar11;\n  int *piVar12;\n  undefined4 *puVar13;\n  wint_t wVar14;\n  __int32_t **pp_Var15;\n  int *__ptr;\n  undefined4 *puVar16;\n  char cVar17;\n  uint extraout_ECX;\n  uint uVar18;\n  int iVar19;\n  int iVar20;\n  int *piVar21;\n  int *piVar22;\n  uint uVar23;\n  int *piVar24;\n  int *piVar25;\n  int iVar26;\n  int iVar27;\n  int *piVar28;\n  size_t __size;\n  int *piVar29;\n  undefined4 *puVar30;\n  uint uVar31;\n  uint uVar32;\n  int unaff_EDI;\n  byte *pbVar33;\n  void **ppvVar34;\n  int in_GS_OFFSET;\n  bool bVar35;\n  bool bVar36;\n  byte bVar37;\n  undefined8 uVar38;\n  int *local_b0;\n  uint local_9c;\n  int local_98;\n  int local_94;\n  int local_88;\n  int local_84;\n  int local_80;\n  int local_7c;\n  void *local_78;\n  void *local_74;\n  void *local_70;\n  void *local_6c;\n  void *local_68;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  int local_4c;\n  uint local_44;\n  int local_34;\n  undefined1 local_2c;\n  byte local_2b;\n  byte local_2a;\n  char local_29;\n  int local_24;\n  int local_20;\n  \n  bVar37 = 0;\n  uVar38 = FUN_0002a2ea();\n  pvVar9 = (void *)((ulonglong)uVar38 >> 0x20);\n  piVar3 = (int *)uVar38;\n  __ptr = (int *)*piVar3;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  *(byte *)(piVar3 + 7) = *(byte *)(piVar3 + 7) & 0x90;\n  local_88 = 0;\n  piVar3[3] = param_1;\n  piVar3[2] = 0;\n  piVar3[6] = 0;\n  if ((uint)piVar3[1] < 0x88) {\n    __ptr = (int *)realloc(__ptr,0x88);\n    if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }\n    piVar3[1] = 0x88;\n    *piVar3 = (int)__ptr;\n  }\n  piVar3[2] = 0x88;\n  *__ptr = 0;\n  __ptr[0x21] = 0;\n  puVar8 = (undefined4 *)((uint)(__ptr + 1) & 0xfffffffc);\n  for (uVar18 = (uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2;\n      uVar18 != 0; uVar18 = uVar18 - 1) {\n    *puVar8 = 0;\n    puVar8 = puVar8 + (uint)bVar37 * -2 + 1;\n  }\n  __ptr[0x10] = 0x1f;\n  if (extraout_ECX < 0xaaaaaaa) {\n    iVar7 = extraout_ECX + 1;\n    __ptr[1] = iVar7;\n    pvVar4 = malloc(iVar7 * 8);\n    *__ptr = (int)pvVar4;\n    if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }\n    pvVar4 = calloc(0xc,uVar18);\n    __ptr[0x11] = iVar19;\n    __ptr[8] = (int)pvVar4;\n    sVar5 = __ctype_get_mb_cur_max();\n    __ptr[0x17] = sVar5;\n    pbVar6 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }\n    bVar1 = *(byte *)(__ptr + 0x16);\n    *(byte *)(__ptr + 0x16) = bVar1 & 0xf7;\n    if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }\n    if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }\n  }\nLAB_000282d0:\n  local_88 = 0xc;\n  goto LAB_000282d8;\ncode_r0x00028148:\n  cVar17 = (char)piVar25[6];\n  piVar24 = (int *)piVar25[1];\n  piVar22 = piVar24;\n  if (cVar17 == '\x11') {\n    iVar19 = piVar25[5];\n    piVar29[1] = (int)piVar24;\n    if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }\n    piVar12[iVar19] = piVar12[piVar29[5]];\n    if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }\njoined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar17 = (char)piVar24[6];\n    piVar22 = (int *)piVar24[1];\n    piVar25 = piVar24;\n  }\n  goto LAB_00028010;\n  while (piVar12[iVar19] == iVar19) {\nLAB_0002806d:\n    iVar19 = iVar19 + 1;\n    if (iVar19 == iVar7) goto LAB_00028074;\n  }\nLAB_0002809c:\n  do {\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  } while (piVar21 != (int *)0x0);\n  iVar7 = 0;\n  piVar21 = (int *)0x0;\n  do {\n    local_80 = 0;\n    if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }\n    piVar22 = (int *)*piVar12;\n    if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }\n    piVar21 = (int *)piVar22[2];\n    if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;\n    iVar7 = piVar22[1];\n    piVar12 = piVar22;\n  } while( true );\nLAB_00028074:\n  free(piVar12);\n  local_b0[0x21] = 0;\n  piVar21 = (int *)local_b0[0xd];\n  goto LAB_0002809c;\nLAB_000281a0:\n  do {\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  } while ((undefined4 *)puVar16[2] != (undefined4 *)0x0);\n  do {\n    if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    puVar8 = (undefined4 *)puVar13[2];\n    bVar35 = puVar16 == puVar8;\n    puVar16 = puVar13;\n  } while (puVar8 == (undefined4 *)0x0 || bVar35);\n  goto LAB_000281a0;\nLAB_00028250:\n  if (cVar17 == '\x10') {\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }\n  else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }\n  while( true ) {\n    cVar17 = *(char *)(puVar16 + 6);\n    puVar30 = puVar16 + 1;\n    puVar13 = puVar16;\n    puVar16 = (undefined4 *)*puVar30;\n    if (cVar17 != '\v') break;\nLAB_00028283:\n    puVar16[4] = puVar13;\n  }\n  goto LAB_00028250;\n  while (puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0) {\n    while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }\n  }\n  bVar36 = false;\n  iVar19 = 0;\n  do {\n    if (local_b0[2] == iVar19) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }\n  } while( true );\ncode_r0x000284f2:\n  iVar19 = iVar19 + 1;\n  if (local_b0[2] == iVar19) {\nLAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    iVar19 = 0;\n    bVar36 = false;\n  }\n  goto LAB_000284dd;\nLAB_00028330:\n  iVar7 = 0xc;\nLAB_00028335:\n  local_b0 = (int *)*piVar3;\n  local_88 = iVar7;\nLAB_00027c60:\n  puVar8 = (undefined4 *)local_b0[0xe];\n  while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }\n  local_b0[0xe] = 0;\n  local_b0[0x10] = 0x1f;\n  local_b0[0xd] = 0;\n  free((void *)local_b0[4]);\n  local_b0[4] = 0;\n  free(local_6c);\n  free(local_68);\n  if (local_29 != '\0') {\n    free(local_70);\n  }\n  goto LAB_000282d8;\nLAB_0002897d:\n  do {\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  } while (uVar18 < uVar31);\nLAB_000289b4:\n  if (*(int *)((int)local_78 + uVar18 * 4) == iVar19) {\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }\n  iVar7 = FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc);\n  if (iVar7 != 0) goto LAB_00028a39;\n  iVar7 = 1;\n  iVar19 = local_7c;\n  if (local_7c < 2) goto LAB_000289f2;\n  goto LAB_00028917;\nLAB_0002875b:\n  while( true ) {\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }\n  if (uVar23 != 0) {\n    local_9c = 0;\n    local_b0 = (int *)local_b0[6];\n    do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);\n  }\nLAB_00028860:\n  local_88 = 0;\n  if (((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0)) {\n    if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    \n        abort();\n      }\n                    \n                    \n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }\n    __ptr[0x17] = 1;\n    *(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;\n  }\n  iVar7 = *(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c);\n  __ptr[0x12] = iVar7;\n  iVar7 = __ptr[6] + iVar7 * 0xc;\n  iVar19 = *(int *)(iVar7 + 4);\n  if (iVar19 < 1) {\n    local_80 = 0;\n    local_7c = 0;\n    local_78 = (void *)0x0;\n    local_84 = 0;\nLAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);\n    __ptr[9] = iVar19;\n    iVar7 = local_84;\n    if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }\n  }\n  else {\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }\nLAB_00028a39:\n  iVar19 = *piVar3;\n  puVar8 = *(undefined4 **)(iVar19 + 0x38);\n  local_88 = iVar7;\n  while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }\n  *(undefined4 *)(iVar19 + 0x38) = 0;\n  *(undefined4 *)(iVar19 + 0x40) = 0x1f;\n  *(undefined4 *)(iVar19 + 0x34) = 0;\n  free(*(void **)(iVar19 + 0x10));\n  *(undefined4 *)(iVar19 + 0x10) = 0;\n  free(local_6c);\n  free(local_68);\n  if (local_29 != '\0') {\n    free(local_70);\n  }\n  iVar7 = local_88;\n  if (local_88 == 0) goto LAB_000282f4;\nLAB_000282d8:\n  FUN_0001c000();\n  *piVar3 = 0;\n  piVar3[1] = 0;\n  iVar7 = local_88;\nLAB_000282f4:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002a720();\n  }\n  return iVar7;\n}" (primitive_type "int") (function_declarator "FUN_00027990(uint param_1)" (identifier "FUN_00027990") (parameter_list "(uint param_1)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) () ")"))) (compound_statement "{\n  byte bVar1;\n  undefined4 uVar2;\n  int *piVar3;\n  void *pvVar4;\n  size_t sVar5;\n  byte *pbVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  void *pvVar9;\n  void *pvVar10;\n  void *pvVar11;\n  int *piVar12;\n  undefined4 *puVar13;\n  wint_t wVar14;\n  __int32_t **pp_Var15;\n  int *__ptr;\n  undefined4 *puVar16;\n  char cVar17;\n  uint extraout_ECX;\n  uint uVar18;\n  int iVar19;\n  int iVar20;\n  int *piVar21;\n  int *piVar22;\n  uint uVar23;\n  int *piVar24;\n  int *piVar25;\n  int iVar26;\n  int iVar27;\n  int *piVar28;\n  size_t __size;\n  int *piVar29;\n  undefined4 *puVar30;\n  uint uVar31;\n  uint uVar32;\n  int unaff_EDI;\n  byte *pbVar33;\n  void **ppvVar34;\n  int in_GS_OFFSET;\n  bool bVar35;\n  bool bVar36;\n  byte bVar37;\n  undefined8 uVar38;\n  int *local_b0;\n  uint local_9c;\n  int local_98;\n  int local_94;\n  int local_88;\n  int local_84;\n  int local_80;\n  int local_7c;\n  void *local_78;\n  void *local_74;\n  void *local_70;\n  void *local_6c;\n  void *local_68;\n  int local_5c;\n  uint local_58;\n  uint local_54;\n  uint local_50;\n  int local_4c;\n  uint local_44;\n  int local_34;\n  undefined1 local_2c;\n  byte local_2b;\n  byte local_2a;\n  char local_29;\n  int local_24;\n  int local_20;\n  \n  bVar37 = 0;\n  uVar38 = FUN_0002a2ea();\n  pvVar9 = (void *)((ulonglong)uVar38 >> 0x20);\n  piVar3 = (int *)uVar38;\n  __ptr = (int *)*piVar3;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  *(byte *)(piVar3 + 7) = *(byte *)(piVar3 + 7) & 0x90;\n  local_88 = 0;\n  piVar3[3] = param_1;\n  piVar3[2] = 0;\n  piVar3[6] = 0;\n  if ((uint)piVar3[1] < 0x88) {\n    __ptr = (int *)realloc(__ptr,0x88);\n    if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }\n    piVar3[1] = 0x88;\n    *piVar3 = (int)__ptr;\n  }\n  piVar3[2] = 0x88;\n  *__ptr = 0;\n  __ptr[0x21] = 0;\n  puVar8 = (undefined4 *)((uint)(__ptr + 1) & 0xfffffffc);\n  for (uVar18 = (uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2;\n      uVar18 != 0; uVar18 = uVar18 - 1) {\n    *puVar8 = 0;\n    puVar8 = puVar8 + (uint)bVar37 * -2 + 1;\n  }\n  __ptr[0x10] = 0x1f;\n  if (extraout_ECX < 0xaaaaaaa) {\n    iVar7 = extraout_ECX + 1;\n    __ptr[1] = iVar7;\n    pvVar4 = malloc(iVar7 * 8);\n    *__ptr = (int)pvVar4;\n    if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }\n    pvVar4 = calloc(0xc,uVar18);\n    __ptr[0x11] = iVar19;\n    __ptr[8] = (int)pvVar4;\n    sVar5 = __ctype_get_mb_cur_max();\n    __ptr[0x17] = sVar5;\n    pbVar6 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }\n    bVar1 = *(byte *)(__ptr + 0x16);\n    *(byte *)(__ptr + 0x16) = bVar1 & 0xf7;\n    if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }\n    if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }\n  }\nLAB_000282d0:\n  local_88 = 0xc;\n  goto LAB_000282d8;\ncode_r0x00028148:\n  cVar17 = (char)piVar25[6];\n  piVar24 = (int *)piVar25[1];\n  piVar22 = piVar24;\n  if (cVar17 == '\x11') {\n    iVar19 = piVar25[5];\n    piVar29[1] = (int)piVar24;\n    if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }\n    piVar12[iVar19] = piVar12[piVar29[5]];\n    if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }\njoined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar17 = (char)piVar24[6];\n    piVar22 = (int *)piVar24[1];\n    piVar25 = piVar24;\n  }\n  goto LAB_00028010;\n  while (piVar12[iVar19] == iVar19) {\nLAB_0002806d:\n    iVar19 = iVar19 + 1;\n    if (iVar19 == iVar7) goto LAB_00028074;\n  }\nLAB_0002809c:\n  do {\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  } while (piVar21 != (int *)0x0);\n  iVar7 = 0;\n  piVar21 = (int *)0x0;\n  do {\n    local_80 = 0;\n    if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }\n    piVar22 = (int *)*piVar12;\n    if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }\n    piVar21 = (int *)piVar22[2];\n    if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;\n    iVar7 = piVar22[1];\n    piVar12 = piVar22;\n  } while( true );\nLAB_00028074:\n  free(piVar12);\n  local_b0[0x21] = 0;\n  piVar21 = (int *)local_b0[0xd];\n  goto LAB_0002809c;\nLAB_000281a0:\n  do {\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  } while ((undefined4 *)puVar16[2] != (undefined4 *)0x0);\n  do {\n    if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    puVar8 = (undefined4 *)puVar13[2];\n    bVar35 = puVar16 == puVar8;\n    puVar16 = puVar13;\n  } while (puVar8 == (undefined4 *)0x0 || bVar35);\n  goto LAB_000281a0;\nLAB_00028250:\n  if (cVar17 == '\x10') {\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }\n  else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }\n  while( true ) {\n    cVar17 = *(char *)(puVar16 + 6);\n    puVar30 = puVar16 + 1;\n    puVar13 = puVar16;\n    puVar16 = (undefined4 *)*puVar30;\n    if (cVar17 != '\v') break;\nLAB_00028283:\n    puVar16[4] = puVar13;\n  }\n  goto LAB_00028250;\n  while (puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0) {\n    while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }\n  }\n  bVar36 = false;\n  iVar19 = 0;\n  do {\n    if (local_b0[2] == iVar19) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }\n  } while( true );\ncode_r0x000284f2:\n  iVar19 = iVar19 + 1;\n  if (local_b0[2] == iVar19) {\nLAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    iVar19 = 0;\n    bVar36 = false;\n  }\n  goto LAB_000284dd;\nLAB_00028330:\n  iVar7 = 0xc;\nLAB_00028335:\n  local_b0 = (int *)*piVar3;\n  local_88 = iVar7;\nLAB_00027c60:\n  puVar8 = (undefined4 *)local_b0[0xe];\n  while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }\n  local_b0[0xe] = 0;\n  local_b0[0x10] = 0x1f;\n  local_b0[0xd] = 0;\n  free((void *)local_b0[4]);\n  local_b0[4] = 0;\n  free(local_6c);\n  free(local_68);\n  if (local_29 != '\0') {\n    free(local_70);\n  }\n  goto LAB_000282d8;\nLAB_0002897d:\n  do {\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  } while (uVar18 < uVar31);\nLAB_000289b4:\n  if (*(int *)((int)local_78 + uVar18 * 4) == iVar19) {\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }\n  iVar7 = FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc);\n  if (iVar7 != 0) goto LAB_00028a39;\n  iVar7 = 1;\n  iVar19 = local_7c;\n  if (local_7c < 2) goto LAB_000289f2;\n  goto LAB_00028917;\nLAB_0002875b:\n  while( true ) {\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }\n  if (uVar23 != 0) {\n    local_9c = 0;\n    local_b0 = (int *)local_b0[6];\n    do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);\n  }\nLAB_00028860:\n  local_88 = 0;\n  if (((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0)) {\n    if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    \n        abort();\n      }\n                    \n                    \n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }\n    __ptr[0x17] = 1;\n    *(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;\n  }\n  iVar7 = *(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c);\n  __ptr[0x12] = iVar7;\n  iVar7 = __ptr[6] + iVar7 * 0xc;\n  iVar19 = *(int *)(iVar7 + 4);\n  if (iVar19 < 1) {\n    local_80 = 0;\n    local_7c = 0;\n    local_78 = (void *)0x0;\n    local_84 = 0;\nLAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);\n    __ptr[9] = iVar19;\n    iVar7 = local_84;\n    if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }\n  }\n  else {\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }\nLAB_00028a39:\n  iVar19 = *piVar3;\n  puVar8 = *(undefined4 **)(iVar19 + 0x38);\n  local_88 = iVar7;\n  while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }\n  *(undefined4 *)(iVar19 + 0x38) = 0;\n  *(undefined4 *)(iVar19 + 0x40) = 0x1f;\n  *(undefined4 *)(iVar19 + 0x34) = 0;\n  free(*(void **)(iVar19 + 0x10));\n  *(undefined4 *)(iVar19 + 0x10) = 0;\n  free(local_6c);\n  free(local_68);\n  if (local_29 != '\0') {\n    free(local_70);\n  }\n  iVar7 = local_88;\n  if (local_88 == 0) goto LAB_000282f4;\nLAB_000282d8:\n  FUN_0001c000();\n  *piVar3 = 0;\n  piVar3[1] = 0;\n  iVar7 = local_88;\nLAB_000282f4:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002a720();\n  }\n  return iVar7;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "void *pvVar4;" (primitive_type "void") (pointer_declarator "*pvVar4" (* "*") (identifier "pvVar4")) (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "void *pvVar9;" (primitive_type "void") (pointer_declarator "*pvVar9" (* "*") (identifier "pvVar9")) (; ";")) (declaration "void *pvVar10;" (primitive_type "void") (pointer_declarator "*pvVar10" (* "*") (identifier "pvVar10")) (; ";")) (declaration "void *pvVar11;" (primitive_type "void") (pointer_declarator "*pvVar11" (* "*") (identifier "pvVar11")) (; ";")) (declaration "int *piVar12;" (primitive_type "int") (pointer_declarator "*piVar12" (* "*") (identifier "piVar12")) (; ";")) (declaration "undefined4 *puVar13;" (type_identifier "undefined4") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "wint_t wVar14;" (type_identifier "wint_t") (identifier "wVar14") (; ";")) (declaration "__int32_t **pp_Var15;" (type_identifier "__int32_t") (pointer_declarator "**pp_Var15" (* "*") (pointer_declarator "*pp_Var15" (* "*") (identifier "pp_Var15"))) (; ";")) (declaration "int *__ptr;" (primitive_type "int") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "undefined4 *puVar16;" (type_identifier "undefined4") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "char cVar17;" (primitive_type "char") (identifier "cVar17") (; ";")) (declaration "uint extraout_ECX;" (type_identifier "uint") (identifier "extraout_ECX") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "int iVar20;" (primitive_type "int") (identifier "iVar20") (; ";")) (declaration "int *piVar21;" (primitive_type "int") (pointer_declarator "*piVar21" (* "*") (identifier "piVar21")) (; ";")) (declaration "int *piVar22;" (primitive_type "int") (pointer_declarator "*piVar22" (* "*") (identifier "piVar22")) (; ";")) (declaration "uint uVar23;" (type_identifier "uint") (identifier "uVar23") (; ";")) (declaration "int *piVar24;" (primitive_type "int") (pointer_declarator "*piVar24" (* "*") (identifier "piVar24")) (; ";")) (declaration "int *piVar25;" (primitive_type "int") (pointer_declarator "*piVar25" (* "*") (identifier "piVar25")) (; ";")) (declaration "int iVar26;" (primitive_type "int") (identifier "iVar26") (; ";")) (declaration "int iVar27;" (primitive_type "int") (identifier "iVar27") (; ";")) (declaration "int *piVar28;" (primitive_type "int") (pointer_declarator "*piVar28" (* "*") (identifier "piVar28")) (; ";")) (declaration "size_t __size;" (primitive_type "size_t") (identifier "__size") (; ";")) (declaration "int *piVar29;" (primitive_type "int") (pointer_declarator "*piVar29" (* "*") (identifier "piVar29")) (; ";")) (declaration "undefined4 *puVar30;" (type_identifier "undefined4") (pointer_declarator "*puVar30" (* "*") (identifier "puVar30")) (; ";")) (declaration "uint uVar31;" (type_identifier "uint") (identifier "uVar31") (; ";")) (declaration "uint uVar32;" (type_identifier "uint") (identifier "uVar32") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "byte *pbVar33;" (type_identifier "byte") (pointer_declarator "*pbVar33" (* "*") (identifier "pbVar33")) (; ";")) (declaration "void **ppvVar34;" (primitive_type "void") (pointer_declarator "**ppvVar34" (* "*") (pointer_declarator "*ppvVar34" (* "*") (identifier "ppvVar34"))) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar35;" (primitive_type "bool") (identifier "bVar35") (; ";")) (declaration "bool bVar36;" (primitive_type "bool") (identifier "bVar36") (; ";")) (declaration "byte bVar37;" (type_identifier "byte") (identifier "bVar37") (; ";")) (declaration "undefined8 uVar38;" (type_identifier "undefined8") (identifier "uVar38") (; ";")) (declaration "int *local_b0;" (primitive_type "int") (pointer_declarator "*local_b0" (* "*") (identifier "local_b0")) (; ";")) (declaration "uint local_9c;" (type_identifier "uint") (identifier "local_9c") (; ";")) (declaration "int local_98;" (primitive_type "int") (identifier "local_98") (; ";")) (declaration "int local_94;" (primitive_type "int") (identifier "local_94") (; ";")) (declaration "int local_88;" (primitive_type "int") (identifier "local_88") (; ";")) (declaration "int local_84;" (primitive_type "int") (identifier "local_84") (; ";")) (declaration "int local_80;" (primitive_type "int") (identifier "local_80") (; ";")) (declaration "int local_7c;" (primitive_type "int") (identifier "local_7c") (; ";")) (declaration "void *local_78;" (primitive_type "void") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "void *local_74;" (primitive_type "void") (pointer_declarator "*local_74" (* "*") (identifier "local_74")) (; ";")) (declaration "void *local_70;" (primitive_type "void") (pointer_declarator "*local_70" (* "*") (identifier "local_70")) (; ";")) (declaration "void *local_6c;" (primitive_type "void") (pointer_declarator "*local_6c" (* "*") (identifier "local_6c")) (; ";")) (declaration "void *local_68;" (primitive_type "void") (pointer_declarator "*local_68" (* "*") (identifier "local_68")) (; ";")) (declaration "int local_5c;" (primitive_type "int") (identifier "local_5c") (; ";")) (declaration "uint local_58;" (type_identifier "uint") (identifier "local_58") (; ";")) (declaration "uint local_54;" (type_identifier "uint") (identifier "local_54") (; ";")) (declaration "uint local_50;" (type_identifier "uint") (identifier "local_50") (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (declaration "undefined1 local_2c;" (type_identifier "undefined1") (identifier "local_2c") (; ";")) (declaration "byte local_2b;" (type_identifier "byte") (identifier "local_2b") (; ";")) (declaration "byte local_2a;" (type_identifier "byte") (identifier "local_2a") (; ";")) (declaration "char local_29;" (primitive_type "char") (identifier "local_29") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "bVar37 = 0;" (assignment_expression "bVar37 = 0" (identifier "bVar37") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar38 = FUN_0002a2ea();" (assignment_expression "uVar38 = FUN_0002a2ea()" (identifier "uVar38") (= "=") (call_expression "FUN_0002a2ea()" (identifier "FUN_0002a2ea") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pvVar9 = (void *)((ulonglong)uVar38 >> 0x20);" (assignment_expression "pvVar9 = (void *)((ulonglong)uVar38 >> 0x20)" (identifier "pvVar9") (= "=") (cast_expression "(void *)((ulonglong)uVar38 >> 0x20)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar38 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar38 >> 0x20" (cast_expression "(ulonglong)uVar38" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar38")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "piVar3 = (int *)uVar38;" (assignment_expression "piVar3 = (int *)uVar38" (identifier "piVar3") (= "=") (cast_expression "(int *)uVar38" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar38"))) (; ";")) (expression_statement "__ptr = (int *)*piVar3;" (assignment_expression "__ptr = (int *)*piVar3" (identifier "__ptr") (= "=") (cast_expression "(int *)*piVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar3" (* "*") (identifier "piVar3")))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "*(byte *)(piVar3 + 7) = *(byte *)(piVar3 + 7) & 0x90;" (assignment_expression "*(byte *)(piVar3 + 7) = *(byte *)(piVar3 + 7) & 0x90" (pointer_expression "*(byte *)(piVar3 + 7)" (* "*") (cast_expression "(byte *)(piVar3 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 7)" (( "(") (binary_expression "piVar3 + 7" (identifier "piVar3") (+ "+") (number_literal "7")) () ")")))) (= "=") (binary_expression "*(byte *)(piVar3 + 7) & 0x90" (pointer_expression "*(byte *)(piVar3 + 7)" (* "*") (cast_expression "(byte *)(piVar3 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 7)" (( "(") (binary_expression "piVar3 + 7" (identifier "piVar3") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "0x90"))) (; ";")) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" (identifier "local_88") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar3[3] = param_1;" (assignment_expression "piVar3[3] = param_1" (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_1")) (; ";")) (expression_statement "piVar3[2] = 0;" (assignment_expression "piVar3[2] = 0" (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar3[6] = 0;" (assignment_expression "piVar3[6] = 0" (subscript_expression "piVar3[6]" (identifier "piVar3") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((uint)piVar3[1] < 0x88) {\n    __ptr = (int *)realloc(__ptr,0x88);\n    if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }\n    piVar3[1] = 0x88;\n    *piVar3 = (int)__ptr;\n  }" (if "if") (parenthesized_expression "((uint)piVar3[1] < 0x88)" (( "(") (binary_expression "(uint)piVar3[1] < 0x88" (cast_expression "(uint)piVar3[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]"))) (< "<") (number_literal "0x88")) () ")")) (compound_statement "{\n    __ptr = (int *)realloc(__ptr,0x88);\n    if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }\n    piVar3[1] = 0x88;\n    *piVar3 = (int)__ptr;\n  }" ({ "{") (expression_statement "__ptr = (int *)realloc(__ptr,0x88);" (assignment_expression "__ptr = (int *)realloc(__ptr,0x88)" (identifier "__ptr") (= "=") (cast_expression "(int *)realloc(__ptr,0x88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "realloc(__ptr,0x88)" (identifier "realloc") (argument_list "(__ptr,0x88)" (( "(") (identifier "__ptr") (, ",") (number_literal "0x88") () ")"))))) (; ";")) (if_statement "if (__ptr == (int *)0x0) {\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }" (if "if") (parenthesized_expression "(__ptr == (int *)0x0)" (( "(") (binary_expression "__ptr == (int *)0x0" (identifier "__ptr") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      iVar7 = 0xc;\n      goto LAB_000282f4;\n    }" ({ "{") (expression_statement "iVar7 = 0xc;" (assignment_expression "iVar7 = 0xc" (identifier "iVar7") (= "=") (number_literal "0xc")) (; ";")) (goto_statement "goto LAB_000282f4;" (goto "goto") (statement_identifier "LAB_000282f4") (; ";")) (} "}"))) (expression_statement "piVar3[1] = 0x88;" (assignment_expression "piVar3[1] = 0x88" (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0x88")) (; ";")) (expression_statement "*piVar3 = (int)__ptr;" (assignment_expression "*piVar3 = (int)__ptr" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (cast_expression "(int)__ptr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__ptr"))) (; ";")) (} "}"))) (expression_statement "piVar3[2] = 0x88;" (assignment_expression "piVar3[2] = 0x88" (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0x88")) (; ";")) (expression_statement "*__ptr = 0;" (assignment_expression "*__ptr = 0" (pointer_expression "*__ptr" (* "*") (identifier "__ptr")) (= "=") (number_literal "0")) (; ";")) (expression_statement "__ptr[0x21] = 0;" (assignment_expression "__ptr[0x21] = 0" (subscript_expression "__ptr[0x21]" (identifier "__ptr") ([ "[") (number_literal "0x21") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8 = (undefined4 *)((uint)(__ptr + 1) & 0xfffffffc);" (assignment_expression "puVar8 = (undefined4 *)((uint)(__ptr + 1) & 0xfffffffc)" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)((uint)(__ptr + 1) & 0xfffffffc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(__ptr + 1) & 0xfffffffc)" (( "(") (binary_expression "(uint)(__ptr + 1) & 0xfffffffc" (call_expression "(uint)(__ptr + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(__ptr + 1)" (( "(") (binary_expression "__ptr + 1" (identifier "__ptr") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (for_statement "for (uVar18 = (uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2;\n      uVar18 != 0; uVar18 = uVar18 - 1) {\n    *puVar8 = 0;\n    puVar8 = puVar8 + (uint)bVar37 * -2 + 1;\n  }" (for "for") (( "(") (assignment_expression "uVar18 = (uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2" (identifier "uVar18") (= "=") (binary_expression "(uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2" (call_expression "(uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc)))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc)))" (( "(") (binary_expression "(int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))" (cast_expression "(int)__ptr" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__ptr")) (+ "+") (parenthesized_expression "(0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))" (( "(") (binary_expression "0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc)" (number_literal "0x88") (- "-") (cast_expression "(int)((uint)(__ptr + 1) & 0xfffffffc)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uint)(__ptr + 1) & 0xfffffffc)" (( "(") (binary_expression "(uint)(__ptr + 1) & 0xfffffffc" (call_expression "(uint)(__ptr + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(__ptr + 1)" (( "(") (binary_expression "__ptr + 1" (identifier "__ptr") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")))) () ")"))) () ")"))) (>> ">>") (number_literal "2"))) (; ";") (binary_expression "uVar18 != 0" (identifier "uVar18") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar18 = uVar18 - 1" (identifier "uVar18") (= "=") (binary_expression "uVar18 - 1" (identifier "uVar18") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n    *puVar8 = 0;\n    puVar8 = puVar8 + (uint)bVar37 * -2 + 1;\n  }" ({ "{") (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8 = puVar8 + (uint)bVar37 * -2 + 1;" (assignment_expression "puVar8 = puVar8 + (uint)bVar37 * -2 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + (uint)bVar37 * -2 + 1" (binary_expression "puVar8 + (uint)bVar37 * -2" (identifier "puVar8") (+ "+") (binary_expression "(uint)bVar37 * -2" (cast_expression "(uint)bVar37" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar37")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "__ptr[0x10] = 0x1f;" (assignment_expression "__ptr[0x10] = 0x1f" (subscript_expression "__ptr[0x10]" (identifier "__ptr") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if (extraout_ECX < 0xaaaaaaa) {\n    iVar7 = extraout_ECX + 1;\n    __ptr[1] = iVar7;\n    pvVar4 = malloc(iVar7 * 8);\n    *__ptr = (int)pvVar4;\n    if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }\n    pvVar4 = calloc(0xc,uVar18);\n    __ptr[0x11] = iVar19;\n    __ptr[8] = (int)pvVar4;\n    sVar5 = __ctype_get_mb_cur_max();\n    __ptr[0x17] = sVar5;\n    pbVar6 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }\n    bVar1 = *(byte *)(__ptr + 0x16);\n    *(byte *)(__ptr + 0x16) = bVar1 & 0xf7;\n    if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }\n    if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }\n  }" (if "if") (parenthesized_expression "(extraout_ECX < 0xaaaaaaa)" (( "(") (binary_expression "extraout_ECX < 0xaaaaaaa" (identifier "extraout_ECX") (< "<") (number_literal "0xaaaaaaa")) () ")")) (compound_statement "{\n    iVar7 = extraout_ECX + 1;\n    __ptr[1] = iVar7;\n    pvVar4 = malloc(iVar7 * 8);\n    *__ptr = (int)pvVar4;\n    if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }\n    pvVar4 = calloc(0xc,uVar18);\n    __ptr[0x11] = iVar19;\n    __ptr[8] = (int)pvVar4;\n    sVar5 = __ctype_get_mb_cur_max();\n    __ptr[0x17] = sVar5;\n    pbVar6 = (byte *)nl_langinfo(0xe);\n    if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }\n    bVar1 = *(byte *)(__ptr + 0x16);\n    *(byte *)(__ptr + 0x16) = bVar1 & 0xf7;\n    if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }\n    if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }\n  }" ({ "{") (expression_statement "iVar7 = extraout_ECX + 1;" (assignment_expression "iVar7 = extraout_ECX + 1" (identifier "iVar7") (= "=") (binary_expression "extraout_ECX + 1" (identifier "extraout_ECX") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__ptr[1] = iVar7;" (assignment_expression "__ptr[1] = iVar7" (subscript_expression "__ptr[1]" (identifier "__ptr") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "pvVar4 = malloc(iVar7 * 8);" (assignment_expression "pvVar4 = malloc(iVar7 * 8)" (identifier "pvVar4") (= "=") (call_expression "malloc(iVar7 * 8)" (identifier "malloc") (argument_list "(iVar7 * 8)" (( "(") (binary_expression "iVar7 * 8" (identifier "iVar7") (* "*") (number_literal "8")) () ")")))) (; ";")) (expression_statement "*__ptr = (int)pvVar4;" (assignment_expression "*__ptr = (int)pvVar4" (pointer_expression "*__ptr" (* "*") (identifier "__ptr")) (= "=") (cast_expression "(int)pvVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar4"))) (; ";")) (if_statement "if (extraout_ECX == 0) {\n      iVar19 = 0;\n      uVar18 = 1;\n    }\n    else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }" (if "if") (parenthesized_expression "(extraout_ECX == 0)" (( "(") (binary_expression "extraout_ECX == 0" (identifier "extraout_ECX") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar19 = 0;\n      uVar18 = 1;\n    }" ({ "{") (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" (identifier "uVar18") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }" (else "else") (compound_statement "{\n      uVar18 = 1;\n      do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);\n      iVar19 = uVar18 - 1;\n    }" ({ "{") (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" (identifier "uVar18") (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n        uVar18 = uVar18 * 2;\n      } while (uVar18 <= extraout_ECX);" (do "do") (compound_statement "{\n        uVar18 = uVar18 * 2;\n      }" ({ "{") (expression_statement "uVar18 = uVar18 * 2;" (assignment_expression "uVar18 = uVar18 * 2" (identifier "uVar18") (= "=") (binary_expression "uVar18 * 2" (identifier "uVar18") (* "*") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar18 <= extraout_ECX)" (( "(") (binary_expression "uVar18 <= extraout_ECX" (identifier "uVar18") (<= "<=") (identifier "extraout_ECX")) () ")")) (; ";")) (expression_statement "iVar19 = uVar18 - 1;" (assignment_expression "iVar19 = uVar18 - 1" (identifier "iVar19") (= "=") (binary_expression "uVar18 - 1" (identifier "uVar18") (- "-") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "pvVar4 = calloc(0xc,uVar18);" (assignment_expression "pvVar4 = calloc(0xc,uVar18)" (identifier "pvVar4") (= "=") (call_expression "calloc(0xc,uVar18)" (identifier "calloc") (argument_list "(0xc,uVar18)" (( "(") (number_literal "0xc") (, ",") (identifier "uVar18") () ")")))) (; ";")) (expression_statement "__ptr[0x11] = iVar19;" (assignment_expression "__ptr[0x11] = iVar19" (subscript_expression "__ptr[0x11]" (identifier "__ptr") ([ "[") (number_literal "0x11") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (expression_statement "__ptr[8] = (int)pvVar4;" (assignment_expression "__ptr[8] = (int)pvVar4" (subscript_expression "__ptr[8]" (identifier "__ptr") ([ "[") (number_literal "8") (] "]")) (= "=") (cast_expression "(int)pvVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar4"))) (; ";")) (expression_statement "sVar5 = __ctype_get_mb_cur_max();" (assignment_expression "sVar5 = __ctype_get_mb_cur_max()" (identifier "sVar5") (= "=") (call_expression "__ctype_get_mb_cur_max()" (identifier "__ctype_get_mb_cur_max") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "__ptr[0x17] = sVar5;" (assignment_expression "__ptr[0x17] = sVar5" (subscript_expression "__ptr[0x17]" (identifier "__ptr") ([ "[") (number_literal "0x17") (] "]")) (= "=") (identifier "sVar5")) (; ";")) (expression_statement "pbVar6 = (byte *)nl_langinfo(0xe);" (assignment_expression "pbVar6 = (byte *)nl_langinfo(0xe)" (identifier "pbVar6") (= "=") (cast_expression "(byte *)nl_langinfo(0xe)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "nl_langinfo(0xe)" (identifier "nl_langinfo") (argument_list "(0xe)" (( "(") (number_literal "0xe") () ")"))))) (; ";")) (if_statement "if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       ) {\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }" (if "if") (parenthesized_expression "((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)\n       )" (( "(") (binary_expression "(((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)" (parenthesized_expression "(((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54))" (( "(") (binary_expression "((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)" (parenthesized_expression "((*pbVar6 & 0xdf) == 0x55)" (( "(") (binary_expression "(*pbVar6 & 0xdf) == 0x55" (parenthesized_expression "(*pbVar6 & 0xdf)" (( "(") (binary_expression "*pbVar6 & 0xdf" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (& "&") (number_literal "0xdf")) () ")")) (== "==") (number_literal "0x55")) () ")")) (&& "&&") (parenthesized_expression "((pbVar6[1] & 0xdf) == 0x54)" (( "(") (binary_expression "(pbVar6[1] & 0xdf) == 0x54" (parenthesized_expression "(pbVar6[1] & 0xdf)" (( "(") (binary_expression "pbVar6[1] & 0xdf" (subscript_expression "pbVar6[1]" (identifier "pbVar6") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0xdf")) () ")")) (== "==") (number_literal "0x54")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((pbVar6[2] & 0xdf) == 0x46)" (( "(") (binary_expression "(pbVar6[2] & 0xdf) == 0x46" (parenthesized_expression "(pbVar6[2] & 0xdf)" (( "(") (binary_expression "pbVar6[2] & 0xdf" (subscript_expression "pbVar6[2]" (identifier "pbVar6") ([ "[") (number_literal "2") (] "]")) (& "&") (number_literal "0xdf")) () ")")) (== "==") (number_literal "0x46")) () ")"))) () ")")) (compound_statement "{\n      bVar35 = pbVar6[3] < 0x2d;\n      bVar36 = pbVar6[3] == 0x2d;\n      iVar19 = 2;\n      pbVar6 = pbVar6 + bVar36 + 3;\n      pbVar33 = (byte *)(unaff_EDI + 0x504b);\n      do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);\n      if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }\n    }" ({ "{") (expression_statement "bVar35 = pbVar6[3] < 0x2d;" (assignment_expression "bVar35 = pbVar6[3] < 0x2d" (identifier "bVar35") (= "=") (binary_expression "pbVar6[3] < 0x2d" (subscript_expression "pbVar6[3]" (identifier "pbVar6") ([ "[") (number_literal "3") (] "]")) (< "<") (number_literal "0x2d"))) (; ";")) (expression_statement "bVar36 = pbVar6[3] == 0x2d;" (assignment_expression "bVar36 = pbVar6[3] == 0x2d" (identifier "bVar36") (= "=") (binary_expression "pbVar6[3] == 0x2d" (subscript_expression "pbVar6[3]" (identifier "pbVar6") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0x2d"))) (; ";")) (expression_statement "iVar19 = 2;" (assignment_expression "iVar19 = 2" (identifier "iVar19") (= "=") (number_literal "2")) (; ";")) (expression_statement "pbVar6 = pbVar6 + bVar36 + 3;" (assignment_expression "pbVar6 = pbVar6 + bVar36 + 3" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + bVar36 + 3" (binary_expression "pbVar6 + bVar36" (identifier "pbVar6") (+ "+") (identifier "bVar36")) (+ "+") (number_literal "3"))) (; ";")) (expression_statement "pbVar33 = (byte *)(unaff_EDI + 0x504b);" (assignment_expression "pbVar33 = (byte *)(unaff_EDI + 0x504b)" (identifier "pbVar33") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x504b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x504b)" (( "(") (binary_expression "unaff_EDI + 0x504b" (identifier "unaff_EDI") (+ "+") (number_literal "0x504b")) () ")")))) (; ";")) (do_statement "do {\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      } while (bVar36);" (do "do") (compound_statement "{\n        if (iVar19 == 0) break;\n        iVar19 = iVar19 + -1;\n        bVar35 = *pbVar6 < *pbVar33;\n        bVar36 = *pbVar6 == *pbVar33;\n        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;\n        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar19 == 0) break;" (if "if") (parenthesized_expression "(iVar19 == 0)" (( "(") (binary_expression "iVar19 == 0" (identifier "iVar19") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar19 = iVar19 + -1;" (assignment_expression "iVar19 = iVar19 + -1" (identifier "iVar19") (= "=") (binary_expression "iVar19 + -1" (identifier "iVar19") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar35 = *pbVar6 < *pbVar33;" (assignment_expression "bVar35 = *pbVar6 < *pbVar33" (identifier "bVar35") (= "=") (binary_expression "*pbVar6 < *pbVar33" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (< "<") (pointer_expression "*pbVar33" (* "*") (identifier "pbVar33")))) (; ";")) (expression_statement "bVar36 = *pbVar6 == *pbVar33;" (assignment_expression "bVar36 = *pbVar6 == *pbVar33" (identifier "bVar36") (= "=") (binary_expression "*pbVar6 == *pbVar33" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (== "==") (pointer_expression "*pbVar33" (* "*") (identifier "pbVar33")))) (; ";")) (expression_statement "pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + (uint)bVar37 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar37 * -2" (identifier "pbVar6") (+ "+") (binary_expression "(uint)bVar37 * -2" (cast_expression "(uint)bVar37" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar37")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;" (assignment_expression "pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1" (identifier "pbVar33") (= "=") (binary_expression "pbVar33 + (uint)bVar37 * -2 + 1" (binary_expression "pbVar33 + (uint)bVar37 * -2" (identifier "pbVar33") (+ "+") (binary_expression "(uint)bVar37 * -2" (cast_expression "(uint)bVar37" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar37")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar36)" (( "(") (identifier "bVar36") () ")")) (; ";")) (if_statement "if ((!bVar35 && !bVar36) == bVar35) {\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }" (if "if") (parenthesized_expression "((!bVar35 && !bVar36) == bVar35)" (( "(") (binary_expression "(!bVar35 && !bVar36) == bVar35" (parenthesized_expression "(!bVar35 && !bVar36)" (( "(") (binary_expression "!bVar35 && !bVar36" (unary_expression "!bVar35" (! "!") (identifier "bVar35")) (&& "&&") (unary_expression "!bVar36" (! "!") (identifier "bVar36"))) () ")")) (== "==") (identifier "bVar35")) () ")")) (compound_statement "{\n        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;\n      }" ({ "{") (expression_statement "*(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;" (assignment_expression "*(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4" (pointer_expression "*(byte *)(__ptr + 0x16)" (* "*") (cast_expression "(byte *)(__ptr + 0x16)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr + 0x16)" (( "(") (binary_expression "__ptr + 0x16" (identifier "__ptr") (+ "+") (number_literal "0x16")) () ")")))) (= "=") (binary_expression "*(byte *)(__ptr + 0x16) | 4" (pointer_expression "*(byte *)(__ptr + 0x16)" (* "*") (cast_expression "(byte *)(__ptr + 0x16)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr + 0x16)" (( "(") (binary_expression "__ptr + 0x16" (identifier "__ptr") (+ "+") (number_literal "0x16")) () ")")))) (| "|") (number_literal "4"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "bVar1 = *(byte *)(__ptr + 0x16);" (assignment_expression "bVar1 = *(byte *)(__ptr + 0x16)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(__ptr + 0x16)" (* "*") (cast_expression "(byte *)(__ptr + 0x16)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr + 0x16)" (( "(") (binary_expression "__ptr + 0x16" (identifier "__ptr") (+ "+") (number_literal "0x16")) () ")"))))) (; ";")) (expression_statement "*(byte *)(__ptr + 0x16) = bVar1 & 0xf7;" (assignment_expression "*(byte *)(__ptr + 0x16) = bVar1 & 0xf7" (pointer_expression "*(byte *)(__ptr + 0x16)" (* "*") (cast_expression "(byte *)(__ptr + 0x16)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr + 0x16)" (( "(") (binary_expression "__ptr + 0x16" (identifier "__ptr") (+ "+") (number_literal "0x16")) () ")")))) (= "=") (binary_expression "bVar1 & 0xf7" (identifier "bVar1") (& "&") (number_literal "0xf7"))) (; ";")) (if_statement "if (1 < __ptr[0x17]) {\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }" (if "if") (parenthesized_expression "(1 < __ptr[0x17])" (( "(") (binary_expression "1 < __ptr[0x17]" (number_literal "1") (< "<") (subscript_expression "__ptr[0x17]" (identifier "__ptr") ([ "[") (number_literal "0x17") (] "]"))) () ")")) (compound_statement "{\n      if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }\n    }" ({ "{") (if_statement "if ((bVar1 & 4) == 0) {\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }\n      else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }" (if "if") (parenthesized_expression "((bVar1 & 4) == 0)" (( "(") (binary_expression "(bVar1 & 4) == 0" (parenthesized_expression "(bVar1 & 4)" (( "(") (binary_expression "bVar1 & 4" (identifier "bVar1") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        pvVar4 = calloc(0x20,1);\n        __ptr[0xf] = (int)pvVar4;\n        if (pvVar4 == (void *)0x0) goto LAB_000282d0;\n        iVar19 = 0;\n        do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);\n      }" ({ "{") (expression_statement "pvVar4 = calloc(0x20,1);" (assignment_expression "pvVar4 = calloc(0x20,1)" (identifier "pvVar4") (= "=") (call_expression "calloc(0x20,1)" (identifier "calloc") (argument_list "(0x20,1)" (( "(") (number_literal "0x20") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "__ptr[0xf] = (int)pvVar4;" (assignment_expression "__ptr[0xf] = (int)pvVar4" (subscript_expression "__ptr[0xf]" (identifier "__ptr") ([ "[") (number_literal "0xf") (] "]")) (= "=") (cast_expression "(int)pvVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar4"))) (; ";")) (if_statement "if (pvVar4 == (void *)0x0) goto LAB_000282d0;" (if "if") (parenthesized_expression "(pvVar4 == (void *)0x0)" (( "(") (binary_expression "pvVar4 == (void *)0x0" (identifier "pvVar4") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000282d0;" (goto "goto") (statement_identifier "LAB_000282d0") (; ";"))) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        } while (iVar19 != 0x20);" (do "do") (compound_statement "{\n          uVar18 = iVar19 * 8;\n          iVar20 = 0;\n          do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);\nLAB_00028460:\n          iVar19 = iVar19 + 4;\n        }" ({ "{") (expression_statement "uVar18 = iVar19 * 8;" (assignment_expression "uVar18 = iVar19 * 8" (identifier "uVar18") (= "=") (binary_expression "iVar19 * 8" (identifier "iVar19") (* "*") (number_literal "8"))) (; ";")) (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" (identifier "iVar20") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          } while (iVar20 != 0x20);" (do "do") (compound_statement "{\n            while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }\n            *(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);\n            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;\n            if (wVar14 != uVar18) goto LAB_000283fc;\n            iVar20 = iVar20 + 1;\n            uVar18 = uVar18 + 1;\n          }" ({ "{") (while_statement "while( true ) {\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              wVar14 = btowc(uVar18);\n              if (wVar14 != 0xffffffff) break;\n              if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }\nLAB_00028404:\n              iVar20 = iVar20 + 1;\n              uVar18 = uVar18 + 1;\n              if (iVar20 == 0x20) goto LAB_00028460;\n            }" ({ "{") (expression_statement "wVar14 = btowc(uVar18);" (assignment_expression "wVar14 = btowc(uVar18)" (identifier "wVar14") (= "=") (call_expression "btowc(uVar18)" (identifier "btowc") (argument_list "(uVar18)" (( "(") (identifier "uVar18") () ")")))) (; ";")) (if_statement "if (wVar14 != 0xffffffff) break;" (if "if") (parenthesized_expression "(wVar14 != 0xffffffff)" (( "(") (binary_expression "wVar14 != 0xffffffff" (identifier "wVar14") (!= "!=") (number_literal "0xffffffff")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if ((uVar18 & 0xffffff80) == 0) {\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }" (if "if") (parenthesized_expression "((uVar18 & 0xffffff80) == 0)" (( "(") (binary_expression "(uVar18 & 0xffffff80) == 0" (parenthesized_expression "(uVar18 & 0xffffff80)" (( "(") (binary_expression "uVar18 & 0xffffff80" (identifier "uVar18") (& "&") (number_literal "0xffffff80")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;\n              }" ({ "{") (labeled_statement "LAB_000283fc:\n                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;" (statement_identifier "LAB_000283fc") (: ":") (expression_statement "*(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;" (assignment_expression "*(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8" (pointer_expression "*(byte *)(__ptr + 0x16)" (* "*") (cast_expression "(byte *)(__ptr + 0x16)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr + 0x16)" (( "(") (binary_expression "__ptr + 0x16" (identifier "__ptr") (+ "+") (number_literal "0x16")) () ")")))) (= "=") (binary_expression "*(byte *)(__ptr + 0x16) | 8" (pointer_expression "*(byte *)(__ptr + 0x16)" (* "*") (cast_expression "(byte *)(__ptr + 0x16)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr + 0x16)" (( "(") (binary_expression "__ptr + 0x16" (identifier "__ptr") (+ "+") (number_literal "0x16")) () ")")))) (| "|") (number_literal "8"))) (; ";"))) (} "}"))) (labeled_statement "LAB_00028404:\n              iVar20 = iVar20 + 1;" (statement_identifier "LAB_00028404") (: ":") (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" (identifier "iVar20") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" (identifier "uVar18") (= "=") (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar20 == 0x20) goto LAB_00028460;" (if "if") (parenthesized_expression "(iVar20 == 0x20)" (( "(") (binary_expression "iVar20 == 0x20" (identifier "iVar20") (== "==") (number_literal "0x20")) () ")")) (goto_statement "goto LAB_00028460;" (goto "goto") (statement_identifier "LAB_00028460") (; ";"))) (} "}"))) (expression_statement "*(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);" (assignment_expression "*(uint *)(__ptr[0xf] + iVar19) =\n                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f)" (pointer_expression "*(uint *)(__ptr[0xf] + iVar19)" (* "*") (cast_expression "(uint *)(__ptr[0xf] + iVar19)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr[0xf] + iVar19)" (( "(") (binary_expression "__ptr[0xf] + iVar19" (subscript_expression "__ptr[0xf]" (identifier "__ptr") ([ "[") (number_literal "0xf") (] "]")) (+ "+") (identifier "iVar19")) () ")")))) (= "=") (binary_expression "*(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f)" (pointer_expression "*(uint *)(__ptr[0xf] + iVar19)" (* "*") (cast_expression "(uint *)(__ptr[0xf] + iVar19)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr[0xf] + iVar19)" (( "(") (binary_expression "__ptr[0xf] + iVar19" (subscript_expression "__ptr[0xf]" (identifier "__ptr") ([ "[") (number_literal "0xf") (] "]")) (+ "+") (identifier "iVar19")) () ")")))) (| "|") (binary_expression "1 << ((byte)iVar20 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)iVar20 & 0x1f)" (( "(") (binary_expression "(byte)iVar20 & 0x1f" (cast_expression "(byte)iVar20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar20")) (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (if_statement "if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;" (if "if") (parenthesized_expression "((uVar18 & 0xffffff80) != 0)" (( "(") (binary_expression "(uVar18 & 0xffffff80) != 0" (parenthesized_expression "(uVar18 & 0xffffff80)" (( "(") (binary_expression "uVar18 & 0xffffff80" (identifier "uVar18") (& "&") (number_literal "0xffffff80")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00028404;" (goto "goto") (statement_identifier "LAB_00028404") (; ";"))) (if_statement "if (wVar14 != uVar18) goto LAB_000283fc;" (if "if") (parenthesized_expression "(wVar14 != uVar18)" (( "(") (binary_expression "wVar14 != uVar18" (identifier "wVar14") (!= "!=") (identifier "uVar18")) () ")")) (goto_statement "goto LAB_000283fc;" (goto "goto") (statement_identifier "LAB_000283fc") (; ";"))) (expression_statement "iVar20 = iVar20 + 1;" (assignment_expression "iVar20 = iVar20 + 1" (identifier "iVar20") (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" (identifier "uVar18") (= "=") (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar20 != 0x20)" (( "(") (binary_expression "iVar20 != 0x20" (identifier "iVar20") (!= "!=") (number_literal "0x20")) () ")")) (; ";")) (labeled_statement "LAB_00028460:\n          iVar19 = iVar19 + 4;" (statement_identifier "LAB_00028460") (: ":") (expression_statement "iVar19 = iVar19 + 4;" (assignment_expression "iVar19 = iVar19 + 4" (identifier "iVar19") (= "=") (binary_expression "iVar19 + 4" (identifier "iVar19") (+ "+") (number_literal "4"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(iVar19 != 0x20)" (( "(") (binary_expression "iVar19 != 0x20" (identifier "iVar19") (!= "!=") (number_literal "0x20")) () ")")) (; ";")) (} "}")) (else_clause "else {\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }" (else "else") (compound_statement "{\n        __ptr[0xf] = unaff_EDI + 0x58c9;\n      }" ({ "{") (expression_statement "__ptr[0xf] = unaff_EDI + 0x58c9;" (assignment_expression "__ptr[0xf] = unaff_EDI + 0x58c9" (subscript_expression "__ptr[0xf]" (identifier "__ptr") ([ "[") (number_literal "0xf") (] "]")) (= "=") (binary_expression "unaff_EDI + 0x58c9" (identifier "unaff_EDI") (+ "+") (number_literal "0x58c9"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if ((*__ptr != 0) && (__ptr[8] != 0)) {\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }" (if "if") (parenthesized_expression "((*__ptr != 0) && (__ptr[8] != 0))" (( "(") (binary_expression "(*__ptr != 0) && (__ptr[8] != 0)" (parenthesized_expression "(*__ptr != 0)" (( "(") (binary_expression "*__ptr != 0" (pointer_expression "*__ptr" (* "*") (identifier "__ptr")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(__ptr[8] != 0)" (( "(") (binary_expression "__ptr[8] != 0" (subscript_expression "__ptr[8]" (identifier "__ptr") ([ "[") (number_literal "8") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      local_88 = 0;\n      iVar19 = piVar3[5];\n      ppvVar34 = &local_70;\n      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }\n      uVar18 = param_1 & 0x400000;\n      local_2c = uVar18 != 0;\n      local_29 = iVar19 != 0 || uVar18 != 0;\n      iVar20 = __ptr[0x17];\n      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;\n      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;\n      local_74 = pvVar9;\n      local_44 = extraout_ECX;\n      local_34 = iVar19;\n      local_24 = iVar20;\n      if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }\n      if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }\n      local_70 = pvVar9;\n      if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }\nLAB_00027d86:\n      local_58 = uVar31;\n      local_88 = 0;\n      iVar7 = *piVar3;\n      piVar3[6] = 0;\n      *(uint *)(iVar7 + 0x80) = param_1;\n      iVar19 = FUN_0001afc0();\n      local_4c = local_4c + iVar19;\n      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);\n      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }\n      iVar19 = *(int *)(iVar7 + 0x40);\n      if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }\nLAB_00028d28:\n      local_88 = 0xc;\n      __ptr[0xd] = 0;\n      goto LAB_00027c60;\n    }" ({ "{") (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" (identifier "local_88") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar19 = piVar3[5];" (assignment_expression "iVar19 = piVar3[5]" (identifier "iVar19") (= "=") (subscript_expression "piVar3[5]" (identifier "piVar3") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "ppvVar34 = &local_70;" (assignment_expression "ppvVar34 = &local_70" (identifier "ppvVar34") (= "=") (pointer_expression "&local_70" (& "&") (identifier "local_70"))) (; ";")) (for_statement "for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }" (for "for") (( "(") (assignment_expression "iVar20 = 0x13" (identifier "iVar20") (= "=") (number_literal "0x13")) (; ";") (binary_expression "iVar20 != 0" (identifier "iVar20") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar20 = iVar20 + -1" (identifier "iVar20") (= "=") (binary_expression "iVar20 + -1" (identifier "iVar20") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n        *ppvVar34 = (void *)0x0;\n        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;\n      }" ({ "{") (expression_statement "*ppvVar34 = (void *)0x0;" (assignment_expression "*ppvVar34 = (void *)0x0" (pointer_expression "*ppvVar34" (* "*") (identifier "ppvVar34")) (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;" (assignment_expression "ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1" (identifier "ppvVar34") (= "=") (binary_expression "ppvVar34 + (uint)bVar37 * -2 + 1" (binary_expression "ppvVar34 + (uint)bVar37 * -2" (identifier "ppvVar34") (+ "+") (binary_expression "(uint)bVar37 * -2" (cast_expression "(uint)bVar37" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar37")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar18 = param_1 & 0x400000;" (assignment_expression "uVar18 = param_1 & 0x400000" (identifier "uVar18") (= "=") (binary_expression "param_1 & 0x400000" (identifier "param_1") (& "&") (number_literal "0x400000"))) (; ";")) (expression_statement "local_2c = uVar18 != 0;" (assignment_expression "local_2c = uVar18 != 0" (identifier "local_2c") (= "=") (binary_expression "uVar18 != 0" (identifier "uVar18") (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "local_29 = iVar19 != 0 || uVar18 != 0;" (assignment_expression "local_29 = iVar19 != 0 || uVar18 != 0" (identifier "local_29") (= "=") (binary_expression "iVar19 != 0 || uVar18 != 0" (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "uVar18 != 0" (identifier "uVar18") (!= "!=") (number_literal "0")))) (; ";")) (expression_statement "iVar20 = __ptr[0x17];" (assignment_expression "iVar20 = __ptr[0x17]" (identifier "iVar20") (= "=") (subscript_expression "__ptr[0x17]" (identifier "__ptr") ([ "[") (number_literal "0x17") (] "]"))) (; ";")) (expression_statement "local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;" (assignment_expression "local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1" (identifier "local_2a") (= "=") (binary_expression "*(byte *)(__ptr + 0x16) >> 3 & 1" (binary_expression "*(byte *)(__ptr + 0x16) >> 3" (pointer_expression "*(byte *)(__ptr + 0x16)" (* "*") (cast_expression "(byte *)(__ptr + 0x16)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr + 0x16)" (( "(") (binary_expression "__ptr + 0x16" (identifier "__ptr") (+ "+") (number_literal "0x16")) () ")")))) (>> ">>") (number_literal "3")) (& "&") (number_literal "1"))) (; ";")) (expression_statement "local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;" (assignment_expression "local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1" (identifier "local_2b") (= "=") (binary_expression "*(byte *)(__ptr + 0x16) >> 2 & 1" (binary_expression "*(byte *)(__ptr + 0x16) >> 2" (pointer_expression "*(byte *)(__ptr + 0x16)" (* "*") (cast_expression "(byte *)(__ptr + 0x16)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr + 0x16)" (( "(") (binary_expression "__ptr + 0x16" (identifier "__ptr") (+ "+") (number_literal "0x16")) () ")")))) (>> ">>") (number_literal "2")) (& "&") (number_literal "1"))) (; ";")) (expression_statement "local_74 = pvVar9;" (assignment_expression "local_74 = pvVar9" (identifier "local_74") (= "=") (identifier "pvVar9")) (; ";")) (expression_statement "local_44 = extraout_ECX;" (assignment_expression "local_44 = extraout_ECX" (identifier "local_44") (= "=") (identifier "extraout_ECX")) (; ";")) (expression_statement "local_34 = iVar19;" (assignment_expression "local_34 = iVar19" (identifier "local_34") (= "=") (identifier "iVar19")) (; ";")) (expression_statement "local_24 = iVar20;" (assignment_expression "local_24 = iVar20" (identifier "local_24") (= "=") (identifier "iVar20")) (; ";")) (if_statement "if (extraout_ECX != 0) {\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }" (if "if") (parenthesized_expression "(extraout_ECX != 0)" (( "(") (binary_expression "extraout_ECX != 0" (identifier "extraout_ECX") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar7 = FUN_00018140(&local_74,iVar7);\n        if (iVar7 != 0) goto LAB_00028335;\n        iVar20 = __ptr[0x17];\n      }" ({ "{") (expression_statement "iVar7 = FUN_00018140(&local_74,iVar7);" (assignment_expression "iVar7 = FUN_00018140(&local_74,iVar7)" (identifier "iVar7") (= "=") (call_expression "FUN_00018140(&local_74,iVar7)" (identifier "FUN_00018140") (argument_list "(&local_74,iVar7)" (( "(") (pointer_expression "&local_74" (& "&") (identifier "local_74")) (, ",") (identifier "iVar7") () ")")))) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_00028335;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00028335;" (goto "goto") (statement_identifier "LAB_00028335") (; ";"))) (expression_statement "iVar20 = __ptr[0x17];" (assignment_expression "iVar20 = __ptr[0x17]" (identifier "iVar20") (= "=") (subscript_expression "__ptr[0x17]" (identifier "__ptr") ([ "[") (number_literal "0x17") (] "]"))) (; ";")) (} "}"))) (if_statement "if (local_29 != '\0') {\n        pvVar9 = local_70;\n      }" (if "if") (parenthesized_expression "(local_29 != '\0')" (( "(") (binary_expression "local_29 != '\0'" (identifier "local_29") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        pvVar9 = local_70;\n      }" ({ "{") (expression_statement "pvVar9 = local_70;" (assignment_expression "pvVar9 = local_70" (identifier "pvVar9") (= "=") (identifier "local_70")) (; ";")) (} "}"))) (expression_statement "local_70 = pvVar9;" (assignment_expression "local_70 = pvVar9" (identifier "local_70") (= "=") (identifier "pvVar9")) (; ";")) (if_statement "if (uVar18 == 0) {\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }\n      else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }" (if "if") (parenthesized_expression "(uVar18 == 0)" (( "(") (binary_expression "uVar18 == 0" (identifier "uVar18") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }\n      }" ({ "{") (if_statement "if (iVar20 < 2) {\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }\n        else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }" (if "if") (parenthesized_expression "(iVar20 < 2)" (( "(") (binary_expression "iVar20 < 2" (identifier "iVar20") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n          uVar31 = local_50;\n          local_54 = local_50;\n          if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }\n        }" ({ "{") (expression_statement "uVar31 = local_50;" (assignment_expression "uVar31 = local_50" (identifier "uVar31") (= "=") (identifier "local_50")) (; ";")) (expression_statement "local_54 = local_50;" (assignment_expression "local_54 = local_50" (identifier "local_54") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (iVar19 != 0) {\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }" (if "if") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }\n            uVar31 = local_58;\n            local_54 = local_58;\n            if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }\n          }" ({ "{") (if_statement "if ((int)local_44 <= (int)local_50) {\n              local_50 = local_44;\n            }" (if "if") (parenthesized_expression "((int)local_44 <= (int)local_50)" (( "(") (binary_expression "(int)local_44 <= (int)local_50" (cast_expression "(int)local_44" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_44")) (<= "<=") (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50"))) () ")")) (compound_statement "{\n              local_50 = local_44;\n            }" ({ "{") (expression_statement "local_50 = local_44;" (assignment_expression "local_50 = local_44" (identifier "local_50") (= "=") (identifier "local_44")) (; ";")) (} "}"))) (expression_statement "uVar31 = local_58;" (assignment_expression "uVar31 = local_58" (identifier "uVar31") (= "=") (identifier "local_58")) (; ";")) (expression_statement "local_54 = local_58;" (assignment_expression "local_54 = local_58" (identifier "local_54") (= "=") (identifier "local_58")) (; ";")) (if_statement "if ((int)local_58 < (int)local_50) {\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }" (if "if") (parenthesized_expression "((int)local_58 < (int)local_50)" (( "(") (binary_expression "(int)local_58 < (int)local_50" (cast_expression "(int)local_58" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_58")) (< "<") (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50"))) () ")")) (compound_statement "{\n              *(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n              local_58 = local_58 + 1;\n              uVar31 = local_50;\n              local_54 = local_50;\n              if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }\n            }" ({ "{") (expression_statement "*(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));" (assignment_expression "*(undefined1 *)((int)pvVar9 + local_58) =\n                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" (pointer_expression "*(undefined1 *)((int)pvVar9 + local_58)" (* "*") (cast_expression "(undefined1 *)((int)pvVar9 + local_58)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar9 + local_58)" (( "(") (binary_expression "(int)pvVar9 + local_58" (cast_expression "(int)pvVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar9")) (+ "+") (identifier "local_58")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" (* "*") (cast_expression "(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" (( "(") (binary_expression "local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58)" (identifier "local_34") (+ "+") (binary_expression "(uint)*(byte *)((int)local_74 + local_5c + local_58)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)local_74 + local_5c + local_58)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_74 + local_5c + local_58)" (( "(") (binary_expression "(int)local_74 + local_5c + local_58" (binary_expression "(int)local_74 + local_5c" (cast_expression "(int)local_74" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_74")) (+ "+") (identifier "local_5c")) (+ "+") (identifier "local_58")) () ")"))))) () ")"))))) (; ";")) (expression_statement "local_58 = local_58 + 1;" (assignment_expression "local_58 = local_58 + 1" (identifier "local_58") (= "=") (binary_expression "local_58 + 1" (identifier "local_58") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar31 = local_50;" (assignment_expression "uVar31 = local_50" (identifier "uVar31") (= "=") (identifier "local_50")) (; ";")) (expression_statement "local_54 = local_50;" (assignment_expression "local_54 = local_50" (identifier "local_54") (= "=") (identifier "local_50")) (; ";")) (if_statement "if ((int)local_58 < (int)local_50) {\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }" (if "if") (parenthesized_expression "((int)local_58 < (int)local_50)" (( "(") (binary_expression "(int)local_58 < (int)local_50" (cast_expression "(int)local_58" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_58")) (< "<") (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50"))) () ")")) (compound_statement "{\n                do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);\n              }" ({ "{") (do_statement "do {\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                } while (local_50 != local_58);" (do "do") (compound_statement "{\n                  *(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));\n                  local_58 = local_58 + 1;\n                  uVar31 = local_50;\n                }" ({ "{") (expression_statement "*(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));" (assignment_expression "*(undefined1 *)((int)pvVar9 + local_58) =\n                       *(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" (pointer_expression "*(undefined1 *)((int)pvVar9 + local_58)" (* "*") (cast_expression "(undefined1 *)((int)pvVar9 + local_58)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar9 + local_58)" (( "(") (binary_expression "(int)pvVar9 + local_58" (cast_expression "(int)pvVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar9")) (+ "+") (identifier "local_58")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" (* "*") (cast_expression "(undefined1 *)\n                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58))" (( "(") (binary_expression "local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58)" (identifier "local_34") (+ "+") (binary_expression "(uint)*(byte *)((int)local_74 + local_5c + local_58)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)local_74 + local_5c + local_58)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_74 + local_5c + local_58)" (( "(") (binary_expression "(int)local_74 + local_5c + local_58" (binary_expression "(int)local_74 + local_5c" (cast_expression "(int)local_74" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_74")) (+ "+") (identifier "local_5c")) (+ "+") (identifier "local_58")) () ")"))))) () ")"))))) (; ";")) (expression_statement "local_58 = local_58 + 1;" (assignment_expression "local_58 = local_58 + 1" (identifier "local_58") (= "=") (binary_expression "local_58 + 1" (identifier "local_58") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar31 = local_50;" (assignment_expression "uVar31 = local_50" (identifier "uVar31") (= "=") (identifier "local_50")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_50 != local_58)" (( "(") (binary_expression "local_50 != local_58" (identifier "local_50") (!= "!=") (identifier "local_58")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n          FUN_00018420();\n          uVar31 = local_58;\n        }" (else "else") (compound_statement "{\n          FUN_00018420();\n          uVar31 = local_58;\n        }" ({ "{") (expression_statement "FUN_00018420();" (call_expression "FUN_00018420()" (identifier "FUN_00018420") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar31 = local_58;" (assignment_expression "uVar31 = local_58" (identifier "uVar31") (= "=") (identifier "local_58")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }" (else "else") (compound_statement "{\n        if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }\n        local_b0 = (int *)local_44;\n        if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }\n        if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }\n        local_54 = (uint)local_b0;\n        uVar31 = local_54;\n      }" ({ "{") (if_statement "if (1 < iVar20) {\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }" (if "if") (parenthesized_expression "(1 < iVar20)" (( "(") (binary_expression "1 < iVar20" (number_literal "1") (< "<") (identifier "iVar20")) () ")")) (compound_statement "{\n          do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);\n          local_b0 = (int *)*piVar3;\n          local_88 = iVar7;\n          goto LAB_00027c60;\n        }" ({ "{") (do_statement "do {\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          } while (iVar7 == 0);" (do "do") (compound_statement "{\n            iVar7 = FUN_00018640(&local_74);\n            if (iVar7 != 0) goto LAB_00028335;\n            uVar31 = local_58;\n            if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;\n            iVar7 = FUN_00018140(&local_74,local_50 * 2);\n          }" ({ "{") (expression_statement "iVar7 = FUN_00018640(&local_74);" (assignment_expression "iVar7 = FUN_00018640(&local_74)" (identifier "iVar7") (= "=") (call_expression "FUN_00018640(&local_74)" (identifier "FUN_00018640") (argument_list "(&local_74)" (( "(") (pointer_expression "&local_74" (& "&") (identifier "local_74")) () ")")))) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_00028335;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00028335;" (goto "goto") (statement_identifier "LAB_00028335") (; ";"))) (expression_statement "uVar31 = local_58;" (assignment_expression "uVar31 = local_58" (identifier "uVar31") (= "=") (identifier "local_58")) (; ";")) (if_statement "if (((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;" (if "if") (parenthesized_expression "(((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50))" (( "(") (binary_expression "((int)extraout_ECX <= (int)local_54) ||\n               ((int)(__ptr[0x17] + local_58) < (int)local_50)" (parenthesized_expression "((int)extraout_ECX <= (int)local_54)" (( "(") (binary_expression "(int)extraout_ECX <= (int)local_54" (cast_expression "(int)extraout_ECX" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "extraout_ECX")) (<= "<=") (cast_expression "(int)local_54" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_54"))) () ")")) (|| "||") (parenthesized_expression "((int)(__ptr[0x17] + local_58) < (int)local_50)" (( "(") (binary_expression "(int)(__ptr[0x17] + local_58) < (int)local_50" (cast_expression "(int)(__ptr[0x17] + local_58)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(__ptr[0x17] + local_58)" (( "(") (binary_expression "__ptr[0x17] + local_58" (subscript_expression "__ptr[0x17]" (identifier "__ptr") ([ "[") (number_literal "0x17") (] "]")) (+ "+") (identifier "local_58")) () ")"))) (< "<") (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50"))) () ")"))) () ")")) (goto_statement "goto LAB_00027d86;" (goto "goto") (statement_identifier "LAB_00027d86") (; ";"))) (expression_statement "iVar7 = FUN_00018140(&local_74,local_50 * 2);" (assignment_expression "iVar7 = FUN_00018140(&local_74,local_50 * 2)" (identifier "iVar7") (= "=") (call_expression "FUN_00018140(&local_74,local_50 * 2)" (identifier "FUN_00018140") (argument_list "(&local_74,local_50 * 2)" (( "(") (pointer_expression "&local_74" (& "&") (identifier "local_74")) (, ",") (binary_expression "local_50 * 2" (identifier "local_50") (* "*") (number_literal "2")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" (identifier "local_b0") (= "=") (cast_expression "(int *)*piVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar3" (* "*") (identifier "piVar3")))) (; ";")) (expression_statement "local_88 = iVar7;" (assignment_expression "local_88 = iVar7" (identifier "local_88") (= "=") (identifier "iVar7")) (; ";")) (goto_statement "goto LAB_00027c60;" (goto "goto") (statement_identifier "LAB_00027c60") (; ";")) (} "}"))) (expression_statement "local_b0 = (int *)local_44;" (assignment_expression "local_b0 = (int *)local_44" (identifier "local_b0") (= "=") (cast_expression "(int *)local_44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_44"))) (; ";")) (if_statement "if ((int)local_50 <= (int)local_44) {\n          local_b0 = (int *)local_50;\n        }" (if "if") (parenthesized_expression "((int)local_50 <= (int)local_44)" (( "(") (binary_expression "(int)local_50 <= (int)local_44" (cast_expression "(int)local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_50")) (<= "<=") (cast_expression "(int)local_44" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_44"))) () ")")) (compound_statement "{\n          local_b0 = (int *)local_50;\n        }" ({ "{") (expression_statement "local_b0 = (int *)local_50;" (assignment_expression "local_b0 = (int *)local_50" (identifier "local_b0") (= "=") (cast_expression "(int *)local_50" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_50"))) (; ";")) (} "}"))) (if_statement "if ((int)local_58 < (int)local_b0) {\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }\n        else {\n          local_b0 = (int *)local_58;\n        }" (if "if") (parenthesized_expression "((int)local_58 < (int)local_b0)" (( "(") (binary_expression "(int)local_58 < (int)local_b0" (cast_expression "(int)local_58" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_58")) (< "<") (cast_expression "(int)local_b0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b0"))) () ")")) (compound_statement "{\n          pp_Var15 = __ctype_toupper_loc();\n          while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }\n        }" ({ "{") (expression_statement "pp_Var15 = __ctype_toupper_loc();" (assignment_expression "pp_Var15 = __ctype_toupper_loc()" (identifier "pp_Var15") (= "=") (call_expression "__ctype_toupper_loc()" (identifier "__ctype_toupper_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (while_statement "while( true ) {\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);\n            if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }\n            if (local_b0 == (int *)(local_58 + 1)) break;\n            local_58 = local_58 + 1;\n            pvVar9 = local_70;\n          }" ({ "{") (expression_statement "uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);" (assignment_expression "uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58)" (identifier "uVar31") (= "=") (binary_expression "(uint)*(byte *)((int)local_74 + local_5c + local_58)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)local_74 + local_5c + local_58)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_74 + local_5c + local_58)" (( "(") (binary_expression "(int)local_74 + local_5c + local_58" (binary_expression "(int)local_74 + local_5c" (cast_expression "(int)local_74" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_74")) (+ "+") (identifier "local_5c")) (+ "+") (identifier "local_58")) () ")"))))) (; ";")) (if_statement "if (local_34 == 0) {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }\n            else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }" (if "if") (parenthesized_expression "(local_34 == 0)" (( "(") (binary_expression "local_34 == 0" (identifier "local_34") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];\n            }" ({ "{") (expression_statement "*(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];" (assignment_expression "*(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31]" (pointer_expression "*(char *)((int)pvVar9 + local_58)" (* "*") (cast_expression "(char *)((int)pvVar9 + local_58)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar9 + local_58)" (( "(") (binary_expression "(int)pvVar9 + local_58" (cast_expression "(int)pvVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar9")) (+ "+") (identifier "local_58")) () ")")))) (= "=") (cast_expression "(char)(*pp_Var15)[uVar31]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "(*pp_Var15)[uVar31]" (parenthesized_expression "(*pp_Var15)" (( "(") (pointer_expression "*pp_Var15" (* "*") (identifier "pp_Var15")) () ")")) ([ "[") (identifier "uVar31") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }" (else "else") (compound_statement "{\n              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];\n            }" ({ "{") (expression_statement "*(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];" (assignment_expression "*(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)]" (pointer_expression "*(char *)((int)pvVar9 + local_58)" (* "*") (cast_expression "(char *)((int)pvVar9 + local_58)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar9 + local_58)" (( "(") (binary_expression "(int)pvVar9 + local_58" (cast_expression "(int)pvVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar9")) (+ "+") (identifier "local_58")) () ")")))) (= "=") (cast_expression "(char)(*pp_Var15)[*(byte *)(local_34 + uVar31)]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "(*pp_Var15)[*(byte *)(local_34 + uVar31)]" (parenthesized_expression "(*pp_Var15)" (( "(") (pointer_expression "*pp_Var15" (* "*") (identifier "pp_Var15")) () ")")) ([ "[") (pointer_expression "*(byte *)(local_34 + uVar31)" (* "*") (cast_expression "(byte *)(local_34 + uVar31)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_34 + uVar31)" (( "(") (binary_expression "local_34 + uVar31" (identifier "local_34") (+ "+") (identifier "uVar31")) () ")")))) (] "]")))) (; ";")) (} "}")))) (if_statement "if (local_b0 == (int *)(local_58 + 1)) break;" (if "if") (parenthesized_expression "(local_b0 == (int *)(local_58 + 1))" (( "(") (binary_expression "local_b0 == (int *)(local_58 + 1)" (identifier "local_b0") (== "==") (cast_expression "(int *)(local_58 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_58 + 1)" (( "(") (binary_expression "local_58 + 1" (identifier "local_58") (+ "+") (number_literal "1")) () ")")))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_58 = local_58 + 1;" (assignment_expression "local_58 = local_58 + 1" (identifier "local_58") (= "=") (binary_expression "local_58 + 1" (identifier "local_58") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pvVar9 = local_70;" (assignment_expression "pvVar9 = local_70" (identifier "pvVar9") (= "=") (identifier "local_70")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          local_b0 = (int *)local_58;\n        }" (else "else") (compound_statement "{\n          local_b0 = (int *)local_58;\n        }" ({ "{") (expression_statement "local_b0 = (int *)local_58;" (assignment_expression "local_b0 = (int *)local_58" (identifier "local_b0") (= "=") (cast_expression "(int *)local_58" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_58"))) (; ";")) (} "}")))) (expression_statement "local_54 = (uint)local_b0;" (assignment_expression "local_54 = (uint)local_b0" (identifier "local_54") (= "=") (cast_expression "(uint)local_b0" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_b0"))) (; ";")) (expression_statement "uVar31 = local_54;" (assignment_expression "uVar31 = local_54" (identifier "uVar31") (= "=") (identifier "local_54")) (; ";")) (} "}")))) (labeled_statement "LAB_00027d86:\n      local_58 = uVar31;" (statement_identifier "LAB_00027d86") (: ":") (expression_statement "local_58 = uVar31;" (assignment_expression "local_58 = uVar31" (identifier "local_58") (= "=") (identifier "uVar31")) (; ";"))) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" (identifier "local_88") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar7 = *piVar3;" (assignment_expression "iVar7 = *piVar3" (identifier "iVar7") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "piVar3[6] = 0;" (assignment_expression "piVar3[6] = 0" (subscript_expression "piVar3[6]" (identifier "piVar3") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(uint *)(iVar7 + 0x80) = param_1;" (assignment_expression "*(uint *)(iVar7 + 0x80) = param_1" (pointer_expression "*(uint *)(iVar7 + 0x80)" (* "*") (cast_expression "(uint *)(iVar7 + 0x80)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x80)" (( "(") (binary_expression "iVar7 + 0x80" (identifier "iVar7") (+ "+") (number_literal "0x80")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "iVar19 = FUN_0001afc0();" (assignment_expression "iVar19 = FUN_0001afc0()" (identifier "iVar19") (= "=") (call_expression "FUN_0001afc0()" (identifier "FUN_0001afc0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_4c = local_4c + iVar19;" (assignment_expression "local_4c = local_4c + iVar19" (identifier "local_4c") (= "=") (binary_expression "local_4c + iVar19" (identifier "local_4c") (+ "+") (identifier "iVar19"))) (; ";")) (expression_statement "puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);" (assignment_expression "puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88)" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)FUN_00026f90(param_1,0,&local_88)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00026f90(param_1,0,&local_88)" (identifier "FUN_00026f90") (argument_list "(param_1,0,&local_88)" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_88" (& "&") (identifier "local_88")) () ")"))))) (; ";")) (if_statement "if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }" (if "if") (parenthesized_expression "((local_88 != 0) && (puVar8 == (undefined4 *)0x0))" (( "(") (binary_expression "(local_88 != 0) && (puVar8 == (undefined4 *)0x0)" (parenthesized_expression "(local_88 != 0)" (( "(") (binary_expression "local_88 != 0" (identifier "local_88") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(puVar8 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar8 == (undefined4 *)0x0" (identifier "puVar8") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n        __ptr[0xd] = 0;\n        local_b0 = (int *)*piVar3;\n        goto LAB_00027c60;\n      }" ({ "{") (expression_statement "__ptr[0xd] = 0;" (assignment_expression "__ptr[0xd] = 0" (subscript_expression "__ptr[0xd]" (identifier "__ptr") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" (identifier "local_b0") (= "=") (cast_expression "(int *)*piVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar3" (* "*") (identifier "piVar3")))) (; ";")) (goto_statement "goto LAB_00027c60;" (goto "goto") (statement_identifier "LAB_00027c60") (; ";")) (} "}"))) (expression_statement "iVar19 = *(int *)(iVar7 + 0x40);" (assignment_expression "iVar19 = *(int *)(iVar7 + 0x40)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(iVar7 + 0x40)" (* "*") (cast_expression "(int *)(iVar7 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x40)" (( "(") (binary_expression "iVar7 + 0x40" (identifier "iVar7") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (if_statement "if (iVar19 == 0x1f) {\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }\n      else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }" (if "if") (parenthesized_expression "(iVar19 == 0x1f)" (( "(") (binary_expression "iVar19 == 0x1f" (identifier "iVar19") (== "==") (number_literal "0x1f")) () ")")) (compound_statement "{\n        puVar16 = (undefined4 *)malloc(0x3e4);\n        if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }\n        local_b0 = (int *)*piVar3;\n        if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }\n      }" ({ "{") (expression_statement "puVar16 = (undefined4 *)malloc(0x3e4);" (assignment_expression "puVar16 = (undefined4 *)malloc(0x3e4)" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)malloc(0x3e4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(0x3e4)" (identifier "malloc") (argument_list "(0x3e4)" (( "(") (number_literal "0x3e4") () ")"))))) (; ";")) (if_statement "if (puVar16 != (undefined4 *)0x0) {\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }" (if "if") (parenthesized_expression "(puVar16 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar16 != (undefined4 *)0x0" (identifier "puVar16") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          iVar20 = 1;\n          iVar27 = 4;\n          iVar26 = 0x18;\n          *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n          iVar19 = 0;\n          *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          goto LAB_00027e0d;\n        }" ({ "{") (expression_statement "iVar20 = 1;" (assignment_expression "iVar20 = 1" (identifier "iVar20") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar27 = 4;" (assignment_expression "iVar27 = 4" (identifier "iVar27") (= "=") (number_literal "4")) (; ";")) (expression_statement "iVar26 = 0x18;" (assignment_expression "iVar26 = 0x18" (identifier "iVar26") (= "=") (number_literal "0x18")) (; ";")) (expression_statement "*puVar16 = *(undefined4 *)(iVar7 + 0x38);" (assignment_expression "*puVar16 = *(undefined4 *)(iVar7 + 0x38)" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (pointer_expression "*(undefined4 *)(iVar7 + 0x38)" (* "*") (cast_expression "(undefined4 *)(iVar7 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x38)" (( "(") (binary_expression "iVar7 + 0x38" (identifier "iVar7") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 **)(iVar7 + 0x38) = puVar16;" (assignment_expression "*(undefined4 **)(iVar7 + 0x38) = puVar16" (pointer_expression "*(undefined4 **)(iVar7 + 0x38)" (* "*") (cast_expression "(undefined4 **)(iVar7 + 0x38)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 0x38)" (( "(") (binary_expression "iVar7 + 0x38" (identifier "iVar7") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "puVar16")) (; ";")) (goto_statement "goto LAB_00027e0d;" (goto "goto") (statement_identifier "LAB_00027e0d") (; ";")) (} "}"))) (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" (identifier "local_b0") (= "=") (cast_expression "(int *)*piVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar3" (* "*") (identifier "piVar3")))) (; ";")) (if_statement "if (puVar8 != (undefined4 *)0x0) {\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }" (if "if") (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar8 != (undefined4 *)0x0" (identifier "puVar8") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          piVar28 = (int *)0x0;\n          bVar35 = true;\n          goto LAB_00027e67;\n        }" ({ "{") (expression_statement "piVar28 = (int *)0x0;" (assignment_expression "piVar28 = (int *)0x0" (identifier "piVar28") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "bVar35 = true;" (assignment_expression "bVar35 = true" (identifier "bVar35") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_00027e67;" (goto "goto") (statement_identifier "LAB_00027e67") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }" (else "else") (compound_statement "{\n        puVar16 = *(undefined4 **)(iVar7 + 0x38);\n        iVar20 = iVar19 + 1;\n        iVar26 = iVar19 * 0x20 + 0x18;\n        iVar27 = iVar19 * 0x20 + 4;\nLAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;\n        puVar16[iVar19 * 8 + 1] = 0;\n        puVar16[iVar19 * 8 + 2] = 0;\n        puVar16[iVar19 * 8 + 3] = 0;\n        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;\n        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n        *pbVar6 = *pbVar6 & 0xf3;\n        piVar28 = (int *)(iVar27 + (int)puVar16);\n        bVar35 = piVar28 == (int *)0x0;\n        puVar16[iVar19 * 8 + 4] = 0;\n        local_b0 = (int *)*piVar3;\n        puVar16[iVar19 * 8 + 5] = 0;\n        puVar16[iVar19 * 8 + 8] = 0xffffffff;\n        piVar21 = piVar28;\n        if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }\n        piVar28 = local_b0;\n        if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }\n      }" ({ "{") (expression_statement "puVar16 = *(undefined4 **)(iVar7 + 0x38);" (assignment_expression "puVar16 = *(undefined4 **)(iVar7 + 0x38)" (identifier "puVar16") (= "=") (pointer_expression "*(undefined4 **)(iVar7 + 0x38)" (* "*") (cast_expression "(undefined4 **)(iVar7 + 0x38)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 0x38)" (( "(") (binary_expression "iVar7 + 0x38" (identifier "iVar7") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "iVar20 = iVar19 + 1;" (assignment_expression "iVar20 = iVar19 + 1" (identifier "iVar20") (= "=") (binary_expression "iVar19 + 1" (identifier "iVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar26 = iVar19 * 0x20 + 0x18;" (assignment_expression "iVar26 = iVar19 * 0x20 + 0x18" (identifier "iVar26") (= "=") (binary_expression "iVar19 * 0x20 + 0x18" (binary_expression "iVar19 * 0x20" (identifier "iVar19") (* "*") (number_literal "0x20")) (+ "+") (number_literal "0x18"))) (; ";")) (expression_statement "iVar27 = iVar19 * 0x20 + 4;" (assignment_expression "iVar27 = iVar19 * 0x20 + 4" (identifier "iVar27") (= "=") (binary_expression "iVar19 * 0x20 + 4" (binary_expression "iVar19 * 0x20" (identifier "iVar19") (* "*") (number_literal "0x20")) (+ "+") (number_literal "4"))) (; ";")) (labeled_statement "LAB_00027e0d:\n        *(int *)(iVar7 + 0x40) = iVar20;" (statement_identifier "LAB_00027e0d") (: ":") (expression_statement "*(int *)(iVar7 + 0x40) = iVar20;" (assignment_expression "*(int *)(iVar7 + 0x40) = iVar20" (pointer_expression "*(int *)(iVar7 + 0x40)" (* "*") (cast_expression "(int *)(iVar7 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x40)" (( "(") (binary_expression "iVar7 + 0x40" (identifier "iVar7") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "iVar20")) (; ";"))) (expression_statement "puVar16[iVar19 * 8 + 1] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 1] = 0" (subscript_expression "puVar16[iVar19 * 8 + 1]" (identifier "puVar16") ([ "[") (binary_expression "iVar19 * 8 + 1" (binary_expression "iVar19 * 8" (identifier "iVar19") (* "*") (number_literal "8")) (+ "+") (number_literal "1")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar16[iVar19 * 8 + 2] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 2] = 0" (subscript_expression "puVar16[iVar19 * 8 + 2]" (identifier "puVar16") ([ "[") (binary_expression "iVar19 * 8 + 2" (binary_expression "iVar19 * 8" (identifier "iVar19") (* "*") (number_literal "8")) (+ "+") (number_literal "2")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar16[iVar19 * 8 + 3] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 3] = 0" (subscript_expression "puVar16[iVar19 * 8 + 3]" (identifier "puVar16") ([ "[") (binary_expression "iVar19 * 8 + 3" (binary_expression "iVar19 * 8" (identifier "iVar19") (* "*") (number_literal "8")) (+ "+") (number_literal "3")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;" (assignment_expression "*(undefined1 *)((int)puVar16 + iVar26 + 4) = 2" (pointer_expression "*(undefined1 *)((int)puVar16 + iVar26 + 4)" (* "*") (cast_expression "(undefined1 *)((int)puVar16 + iVar26 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + iVar26 + 4)" (( "(") (binary_expression "(int)puVar16 + iVar26 + 4" (binary_expression "(int)puVar16 + iVar26" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (identifier "iVar26")) (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "2")) (; ";")) (expression_statement "pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);" (assignment_expression "pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e)" (identifier "pbVar6") (= "=") (cast_expression "(byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + iVar19 * 0x20 + 0x1e)" (( "(") (binary_expression "(int)puVar16 + iVar19 * 0x20 + 0x1e" (binary_expression "(int)puVar16 + iVar19 * 0x20" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (binary_expression "iVar19 * 0x20" (identifier "iVar19") (* "*") (number_literal "0x20"))) (+ "+") (number_literal "0x1e")) () ")")))) (; ";")) (expression_statement "*pbVar6 = *pbVar6 & 0xf3;" (assignment_expression "*pbVar6 = *pbVar6 & 0xf3" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (= "=") (binary_expression "*pbVar6 & 0xf3" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (& "&") (number_literal "0xf3"))) (; ";")) (expression_statement "piVar28 = (int *)(iVar27 + (int)puVar16);" (assignment_expression "piVar28 = (int *)(iVar27 + (int)puVar16)" (identifier "piVar28") (= "=") (cast_expression "(int *)(iVar27 + (int)puVar16)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + (int)puVar16)" (( "(") (binary_expression "iVar27 + (int)puVar16" (identifier "iVar27") (+ "+") (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16"))) () ")")))) (; ";")) (expression_statement "bVar35 = piVar28 == (int *)0x0;" (assignment_expression "bVar35 = piVar28 == (int *)0x0" (identifier "bVar35") (= "=") (binary_expression "piVar28 == (int *)0x0" (identifier "piVar28") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "puVar16[iVar19 * 8 + 4] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 4] = 0" (subscript_expression "puVar16[iVar19 * 8 + 4]" (identifier "puVar16") ([ "[") (binary_expression "iVar19 * 8 + 4" (binary_expression "iVar19 * 8" (identifier "iVar19") (* "*") (number_literal "8")) (+ "+") (number_literal "4")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" (identifier "local_b0") (= "=") (cast_expression "(int *)*piVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar3" (* "*") (identifier "piVar3")))) (; ";")) (expression_statement "puVar16[iVar19 * 8 + 5] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 5] = 0" (subscript_expression "puVar16[iVar19 * 8 + 5]" (identifier "puVar16") ([ "[") (binary_expression "iVar19 * 8 + 5" (binary_expression "iVar19 * 8" (identifier "iVar19") (* "*") (number_literal "8")) (+ "+") (number_literal "5")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar16[iVar19 * 8 + 8] = 0xffffffff;" (assignment_expression "puVar16[iVar19 * 8 + 8] = 0xffffffff" (subscript_expression "puVar16[iVar19 * 8 + 8]" (identifier "puVar16") ([ "[") (binary_expression "iVar19 * 8 + 8" (binary_expression "iVar19 * 8" (identifier "iVar19") (* "*") (number_literal "8")) (+ "+") (number_literal "8")) (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "piVar21 = piVar28;" (assignment_expression "piVar21 = piVar28" (identifier "piVar21") (= "=") (identifier "piVar28")) (; ";")) (if_statement "if (puVar8 != (undefined4 *)0x0) {\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }" (if "if") (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar8 != (undefined4 *)0x0" (identifier "puVar8") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);\n          if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }\n          *(int *)(iVar7 + 0x40) = iVar20;\n          puVar16[iVar19 * 8 + 1] = 0;\n          piVar21 = (int *)(local_98 + (int)puVar16);\n          puVar16[iVar19 * 8 + 2] = puVar8;\n          puVar16[iVar19 * 8 + 3] = piVar28;\n          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;\n          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);\n          *pbVar6 = *pbVar6 & 0xf3;\n          puVar16[iVar19 * 8 + 4] = 0;\n          puVar16[iVar19 * 8 + 5] = 0;\n          puVar16[iVar19 * 8 + 8] = 0xffffffff;\n          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);\n          *puVar8 = piVar21;\n          if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }\n        }" ({ "{") (labeled_statement "LAB_00027e67:\n          iVar19 = *(int *)(iVar7 + 0x40);" (statement_identifier "LAB_00027e67") (: ":") (expression_statement "iVar19 = *(int *)(iVar7 + 0x40);" (assignment_expression "iVar19 = *(int *)(iVar7 + 0x40)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(iVar7 + 0x40)" (* "*") (cast_expression "(int *)(iVar7 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x40)" (( "(") (binary_expression "iVar7 + 0x40" (identifier "iVar7") (+ "+") (number_literal "0x40")) () ")"))))) (; ";"))) (if_statement "if (iVar19 == 0x1f) {\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }\n          else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }" (if "if") (parenthesized_expression "(iVar19 == 0x1f)" (( "(") (binary_expression "iVar19 == 0x1f" (identifier "iVar19") (== "==") (number_literal "0x1f")) () ")")) (compound_statement "{\n            puVar16 = (undefined4 *)malloc(0x3e4);\n            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;\n            iVar20 = 1;\n            local_94 = 0x18;\n            local_98 = 4;\n            *puVar16 = *(undefined4 *)(iVar7 + 0x38);\n            iVar19 = 0;\n            *(undefined4 **)(iVar7 + 0x38) = puVar16;\n          }" ({ "{") (expression_statement "puVar16 = (undefined4 *)malloc(0x3e4);" (assignment_expression "puVar16 = (undefined4 *)malloc(0x3e4)" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)malloc(0x3e4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(0x3e4)" (identifier "malloc") (argument_list "(0x3e4)" (( "(") (number_literal "0x3e4") () ")"))))) (; ";")) (if_statement "if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;" (if "if") (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar16 == (undefined4 *)0x0" (identifier "puVar16") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00028d28;" (goto "goto") (statement_identifier "LAB_00028d28") (; ";"))) (expression_statement "iVar20 = 1;" (assignment_expression "iVar20 = 1" (identifier "iVar20") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_94 = 0x18;" (assignment_expression "local_94 = 0x18" (identifier "local_94") (= "=") (number_literal "0x18")) (; ";")) (expression_statement "local_98 = 4;" (assignment_expression "local_98 = 4" (identifier "local_98") (= "=") (number_literal "4")) (; ";")) (expression_statement "*puVar16 = *(undefined4 *)(iVar7 + 0x38);" (assignment_expression "*puVar16 = *(undefined4 *)(iVar7 + 0x38)" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (pointer_expression "*(undefined4 *)(iVar7 + 0x38)" (* "*") (cast_expression "(undefined4 *)(iVar7 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x38)" (( "(") (binary_expression "iVar7 + 0x38" (identifier "iVar7") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 **)(iVar7 + 0x38) = puVar16;" (assignment_expression "*(undefined4 **)(iVar7 + 0x38) = puVar16" (pointer_expression "*(undefined4 **)(iVar7 + 0x38)" (* "*") (cast_expression "(undefined4 **)(iVar7 + 0x38)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 0x38)" (( "(") (binary_expression "iVar7 + 0x38" (identifier "iVar7") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "puVar16")) (; ";")) (} "}")) (else_clause "else {\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }" (else "else") (compound_statement "{\n            iVar20 = iVar19 + 1;\n            local_98 = iVar19 * 0x20 + 4;\n            local_94 = iVar19 * 0x20 + 0x18;\n            puVar16 = *(undefined4 **)(iVar7 + 0x38);\n          }" ({ "{") (expression_statement "iVar20 = iVar19 + 1;" (assignment_expression "iVar20 = iVar19 + 1" (identifier "iVar20") (= "=") (binary_expression "iVar19 + 1" (identifier "iVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_98 = iVar19 * 0x20 + 4;" (assignment_expression "local_98 = iVar19 * 0x20 + 4" (identifier "local_98") (= "=") (binary_expression "iVar19 * 0x20 + 4" (binary_expression "iVar19 * 0x20" (identifier "iVar19") (* "*") (number_literal "0x20")) (+ "+") (number_literal "4"))) (; ";")) (expression_statement "local_94 = iVar19 * 0x20 + 0x18;" (assignment_expression "local_94 = iVar19 * 0x20 + 0x18" (identifier "local_94") (= "=") (binary_expression "iVar19 * 0x20 + 0x18" (binary_expression "iVar19 * 0x20" (identifier "iVar19") (* "*") (number_literal "0x20")) (+ "+") (number_literal "0x18"))) (; ";")) (expression_statement "puVar16 = *(undefined4 **)(iVar7 + 0x38);" (assignment_expression "puVar16 = *(undefined4 **)(iVar7 + 0x38)" (identifier "puVar16") (= "=") (pointer_expression "*(undefined4 **)(iVar7 + 0x38)" (* "*") (cast_expression "(undefined4 **)(iVar7 + 0x38)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 0x38)" (( "(") (binary_expression "iVar7 + 0x38" (identifier "iVar7") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (} "}")))) (expression_statement "*(int *)(iVar7 + 0x40) = iVar20;" (assignment_expression "*(int *)(iVar7 + 0x40) = iVar20" (pointer_expression "*(int *)(iVar7 + 0x40)" (* "*") (cast_expression "(int *)(iVar7 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x40)" (( "(") (binary_expression "iVar7 + 0x40" (identifier "iVar7") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "iVar20")) (; ";")) (expression_statement "puVar16[iVar19 * 8 + 1] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 1] = 0" (subscript_expression "puVar16[iVar19 * 8 + 1]" (identifier "puVar16") ([ "[") (binary_expression "iVar19 * 8 + 1" (binary_expression "iVar19 * 8" (identifier "iVar19") (* "*") (number_literal "8")) (+ "+") (number_literal "1")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar21 = (int *)(local_98 + (int)puVar16);" (assignment_expression "piVar21 = (int *)(local_98 + (int)puVar16)" (identifier "piVar21") (= "=") (cast_expression "(int *)(local_98 + (int)puVar16)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_98 + (int)puVar16)" (( "(") (binary_expression "local_98 + (int)puVar16" (identifier "local_98") (+ "+") (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16"))) () ")")))) (; ";")) (expression_statement "puVar16[iVar19 * 8 + 2] = puVar8;" (assignment_expression "puVar16[iVar19 * 8 + 2] = puVar8" (subscript_expression "puVar16[iVar19 * 8 + 2]" (identifier "puVar16") ([ "[") (binary_expression "iVar19 * 8 + 2" (binary_expression "iVar19 * 8" (identifier "iVar19") (* "*") (number_literal "8")) (+ "+") (number_literal "2")) (] "]")) (= "=") (identifier "puVar8")) (; ";")) (expression_statement "puVar16[iVar19 * 8 + 3] = piVar28;" (assignment_expression "puVar16[iVar19 * 8 + 3] = piVar28" (subscript_expression "puVar16[iVar19 * 8 + 3]" (identifier "puVar16") ([ "[") (binary_expression "iVar19 * 8 + 3" (binary_expression "iVar19 * 8" (identifier "iVar19") (* "*") (number_literal "8")) (+ "+") (number_literal "3")) (] "]")) (= "=") (identifier "piVar28")) (; ";")) (expression_statement "*(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;" (assignment_expression "*(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10" (pointer_expression "*(undefined1 *)((int)puVar16 + local_94 + 4)" (* "*") (cast_expression "(undefined1 *)((int)puVar16 + local_94 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + local_94 + 4)" (( "(") (binary_expression "(int)puVar16 + local_94 + 4" (binary_expression "(int)puVar16 + local_94" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (identifier "local_94")) (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0x10")) (; ";")) (expression_statement "pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);" (assignment_expression "pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e)" (identifier "pbVar6") (= "=") (cast_expression "(byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + iVar19 * 0x20 + 0x1e)" (( "(") (binary_expression "(int)puVar16 + iVar19 * 0x20 + 0x1e" (binary_expression "(int)puVar16 + iVar19 * 0x20" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (binary_expression "iVar19 * 0x20" (identifier "iVar19") (* "*") (number_literal "0x20"))) (+ "+") (number_literal "0x1e")) () ")")))) (; ";")) (expression_statement "*pbVar6 = *pbVar6 & 0xf3;" (assignment_expression "*pbVar6 = *pbVar6 & 0xf3" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (= "=") (binary_expression "*pbVar6 & 0xf3" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (& "&") (number_literal "0xf3"))) (; ";")) (expression_statement "puVar16[iVar19 * 8 + 4] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 4] = 0" (subscript_expression "puVar16[iVar19 * 8 + 4]" (identifier "puVar16") ([ "[") (binary_expression "iVar19 * 8 + 4" (binary_expression "iVar19 * 8" (identifier "iVar19") (* "*") (number_literal "8")) (+ "+") (number_literal "4")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar16[iVar19 * 8 + 5] = 0;" (assignment_expression "puVar16[iVar19 * 8 + 5] = 0" (subscript_expression "puVar16[iVar19 * 8 + 5]" (identifier "puVar16") ([ "[") (binary_expression "iVar19 * 8 + 5" (binary_expression "iVar19 * 8" (identifier "iVar19") (* "*") (number_literal "8")) (+ "+") (number_literal "5")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar16[iVar19 * 8 + 8] = 0xffffffff;" (assignment_expression "puVar16[iVar19 * 8 + 8] = 0xffffffff" (subscript_expression "puVar16[iVar19 * 8 + 8]" (identifier "puVar16") ([ "[") (binary_expression "iVar19 * 8 + 8" (binary_expression "iVar19 * 8" (identifier "iVar19") (* "*") (number_literal "8")) (+ "+") (number_literal "8")) (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);" (assignment_expression "bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0)" (identifier "bVar35") (= "=") (cast_expression "(bool)(bVar35 | piVar21 == (int *)0x0)" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (parenthesized_expression "(bVar35 | piVar21 == (int *)0x0)" (( "(") (binary_expression "bVar35 | piVar21 == (int *)0x0" (identifier "bVar35") (| "|") (binary_expression "piVar21 == (int *)0x0" (identifier "piVar21") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")))) (; ";")) (expression_statement "*puVar8 = piVar21;" (assignment_expression "*puVar8 = piVar21" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "piVar21")) (; ";")) (if_statement "if (piVar28 != (int *)0x0) {\n            *piVar28 = (int)piVar21;\n          }" (if "if") (parenthesized_expression "(piVar28 != (int *)0x0)" (( "(") (binary_expression "piVar28 != (int *)0x0" (identifier "piVar28") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            *piVar28 = (int)piVar21;\n          }" ({ "{") (expression_statement "*piVar28 = (int)piVar21;" (assignment_expression "*piVar28 = (int)piVar21" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "piVar28 = local_b0;" (assignment_expression "piVar28 = local_b0" (identifier "piVar28") (= "=") (identifier "local_b0")) (; ";")) (if_statement "if (!bVar35) {\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }" (if "if") (parenthesized_expression "(!bVar35)" (( "(") (unary_expression "!bVar35" (! "!") (identifier "bVar35")) () ")")) (compound_statement "{\n          __ptr[0xd] = (int)piVar21;\n          sVar5 = local_b0[1] * 4;\n          __size = local_b0[1] * 0xc;\n          pvVar9 = malloc(sVar5);\n          local_b0[3] = (int)pvVar9;\n          pvVar4 = malloc(sVar5);\n          local_b0[4] = (int)pvVar4;\n          pvVar10 = malloc(__size);\n          local_b0[5] = (int)pvVar10;\n          pvVar11 = malloc(__size);\n          local_b0[6] = (int)pvVar11;\n          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }\n          local_88 = 0xc;\n          goto LAB_00027c60;\n        }" ({ "{") (expression_statement "__ptr[0xd] = (int)piVar21;" (assignment_expression "__ptr[0xd] = (int)piVar21" (subscript_expression "__ptr[0xd]" (identifier "__ptr") ([ "[") (number_literal "0xd") (] "]")) (= "=") (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21"))) (; ";")) (expression_statement "sVar5 = local_b0[1] * 4;" (assignment_expression "sVar5 = local_b0[1] * 4" (identifier "sVar5") (= "=") (binary_expression "local_b0[1] * 4" (subscript_expression "local_b0[1]" (identifier "local_b0") ([ "[") (number_literal "1") (] "]")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "__size = local_b0[1] * 0xc;" (assignment_expression "__size = local_b0[1] * 0xc" (identifier "__size") (= "=") (binary_expression "local_b0[1] * 0xc" (subscript_expression "local_b0[1]" (identifier "local_b0") ([ "[") (number_literal "1") (] "]")) (* "*") (number_literal "0xc"))) (; ";")) (expression_statement "pvVar9 = malloc(sVar5);" (assignment_expression "pvVar9 = malloc(sVar5)" (identifier "pvVar9") (= "=") (call_expression "malloc(sVar5)" (identifier "malloc") (argument_list "(sVar5)" (( "(") (identifier "sVar5") () ")")))) (; ";")) (expression_statement "local_b0[3] = (int)pvVar9;" (assignment_expression "local_b0[3] = (int)pvVar9" (subscript_expression "local_b0[3]" (identifier "local_b0") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)pvVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar9"))) (; ";")) (expression_statement "pvVar4 = malloc(sVar5);" (assignment_expression "pvVar4 = malloc(sVar5)" (identifier "pvVar4") (= "=") (call_expression "malloc(sVar5)" (identifier "malloc") (argument_list "(sVar5)" (( "(") (identifier "sVar5") () ")")))) (; ";")) (expression_statement "local_b0[4] = (int)pvVar4;" (assignment_expression "local_b0[4] = (int)pvVar4" (subscript_expression "local_b0[4]" (identifier "local_b0") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(int)pvVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar4"))) (; ";")) (expression_statement "pvVar10 = malloc(__size);" (assignment_expression "pvVar10 = malloc(__size)" (identifier "pvVar10") (= "=") (call_expression "malloc(__size)" (identifier "malloc") (argument_list "(__size)" (( "(") (identifier "__size") () ")")))) (; ";")) (expression_statement "local_b0[5] = (int)pvVar10;" (assignment_expression "local_b0[5] = (int)pvVar10" (subscript_expression "local_b0[5]" (identifier "local_b0") ([ "[") (number_literal "5") (] "]")) (= "=") (cast_expression "(int)pvVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar10"))) (; ";")) (expression_statement "pvVar11 = malloc(__size);" (assignment_expression "pvVar11 = malloc(__size)" (identifier "pvVar11") (= "=") (call_expression "malloc(__size)" (identifier "malloc") (argument_list "(__size)" (( "(") (identifier "__size") () ")")))) (; ";")) (expression_statement "local_b0[6] = (int)pvVar11;" (assignment_expression "local_b0[6] = (int)pvVar11" (subscript_expression "local_b0[6]" (identifier "local_b0") ([ "[") (number_literal "6") (] "]")) (= "=") (cast_expression "(int)pvVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar11"))) (; ";")) (if_statement "if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)) {\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }" (if "if") (parenthesized_expression "((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0))" (( "(") (binary_expression "(((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&\n             (pvVar11 != (void *)0x0)" (parenthesized_expression "(((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0))" (( "(") (binary_expression "((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)" (parenthesized_expression "((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0))" (( "(") (binary_expression "(pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)" (parenthesized_expression "(pvVar9 != (void *)0x0)" (( "(") (binary_expression "pvVar9 != (void *)0x0" (identifier "pvVar9") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(pvVar4 != (void *)0x0)" (( "(") (binary_expression "pvVar4 != (void *)0x0" (identifier "pvVar4") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(pvVar10 != (void *)0x0)" (( "(") (binary_expression "pvVar10 != (void *)0x0" (identifier "pvVar10") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(pvVar11 != (void *)0x0)" (( "(") (binary_expression "pvVar11 != (void *)0x0" (identifier "pvVar11") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n            iVar7 = piVar3[6];\n            piVar12 = (int *)malloc(iVar7 * 4);\n            local_b0[0x21] = (int)piVar12;\n            piVar21 = (int *)local_b0[0xd];\n            if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }\n            goto LAB_0002809c;\n          }" ({ "{") (expression_statement "iVar7 = piVar3[6];" (assignment_expression "iVar7 = piVar3[6]" (identifier "iVar7") (= "=") (subscript_expression "piVar3[6]" (identifier "piVar3") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "piVar12 = (int *)malloc(iVar7 * 4);" (assignment_expression "piVar12 = (int *)malloc(iVar7 * 4)" (identifier "piVar12") (= "=") (cast_expression "(int *)malloc(iVar7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(iVar7 * 4)" (identifier "malloc") (argument_list "(iVar7 * 4)" (( "(") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "local_b0[0x21] = (int)piVar12;" (assignment_expression "local_b0[0x21] = (int)piVar12" (subscript_expression "local_b0[0x21]" (identifier "local_b0") ([ "[") (number_literal "0x21") (] "]")) (= "=") (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12"))) (; ";")) (expression_statement "piVar21 = (int *)local_b0[0xd];" (assignment_expression "piVar21 = (int *)local_b0[0xd]" (identifier "piVar21") (= "=") (cast_expression "(int *)local_b0[0xd]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_b0[0xd]" (identifier "local_b0") ([ "[") (number_literal "0xd") (] "]")))) (; ";")) (if_statement "if (piVar12 != (int *)0x0) {\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }" (if "if") (parenthesized_expression "(piVar12 != (int *)0x0)" (( "(") (binary_expression "piVar12 != (int *)0x0" (identifier "piVar12") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              iVar19 = 0;\n              if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }\n              cVar17 = (char)piVar21[6];\n              piVar22 = (int *)piVar21[1];\n              piVar25 = piVar21;\nLAB_00028010:\n              piVar29 = piVar25;\n              piVar25 = piVar22;\n              piVar24 = piVar25;\n              if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }\n              if (cVar17 != '\x11') goto joined_r0x00028003;\n              if (piVar25 != (int *)0x0) goto code_r0x00028148;\n              goto LAB_00028038;\n            }" ({ "{") (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar7 != 0) {\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);\n              }" ({ "{") (do_statement "do {\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                } while (iVar19 != iVar7);" (do "do") (compound_statement "{\n                  piVar12[iVar19] = iVar19;\n                  iVar19 = iVar19 + 1;\n                }" ({ "{") (expression_statement "piVar12[iVar19] = iVar19;" (assignment_expression "piVar12[iVar19] = iVar19" (subscript_expression "piVar12[iVar19]" (identifier "piVar12") ([ "[") (identifier "iVar19") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" (identifier "iVar19") (= "=") (binary_expression "iVar19 + 1" (identifier "iVar19") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar19 != iVar7)" (( "(") (binary_expression "iVar19 != iVar7" (identifier "iVar19") (!= "!=") (identifier "iVar7")) () ")")) (; ";")) (} "}"))) (expression_statement "cVar17 = (char)piVar21[6];" (assignment_expression "cVar17 = (char)piVar21[6]" (identifier "cVar17") (= "=") (cast_expression "(char)piVar21[6]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar21[6]" (identifier "piVar21") ([ "[") (number_literal "6") (] "]")))) (; ";")) (expression_statement "piVar22 = (int *)piVar21[1];" (assignment_expression "piVar22 = (int *)piVar21[1]" (identifier "piVar22") (= "=") (cast_expression "(int *)piVar21[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar21[1]" (identifier "piVar21") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "piVar25 = piVar21;" (assignment_expression "piVar25 = piVar21" (identifier "piVar25") (= "=") (identifier "piVar21")) (; ";")) (labeled_statement "LAB_00028010:\n              piVar29 = piVar25;" (statement_identifier "LAB_00028010") (: ":") (expression_statement "piVar29 = piVar25;" (assignment_expression "piVar29 = piVar25" (identifier "piVar29") (= "=") (identifier "piVar25")) (; ";"))) (expression_statement "piVar25 = piVar22;" (assignment_expression "piVar25 = piVar22" (identifier "piVar25") (= "=") (identifier "piVar22")) (; ";")) (expression_statement "piVar24 = piVar25;" (assignment_expression "piVar24 = piVar25" (identifier "piVar24") (= "=") (identifier "piVar25")) (; ";")) (if_statement "if (cVar17 == '\x04') {\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }" (if "if") (parenthesized_expression "(cVar17 == '\x04')" (( "(") (binary_expression "cVar17 == '\x04'" (identifier "cVar17") (== "==") (char_literal "'\x04'" (' "'") (escape_sequence "\x04") (' "'"))) () ")")) (compound_statement "{\n                iVar19 = piVar12[piVar29[5]];\n                piVar29[5] = iVar19;\n                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);\n                goto joined_r0x00028003;\n              }" ({ "{") (expression_statement "iVar19 = piVar12[piVar29[5]];" (assignment_expression "iVar19 = piVar12[piVar29[5]]" (identifier "iVar19") (= "=") (subscript_expression "piVar12[piVar29[5]]" (identifier "piVar12") ([ "[") (subscript_expression "piVar29[5]" (identifier "piVar29") ([ "[") (number_literal "5") (] "]")) (] "]"))) (; ";")) (expression_statement "piVar29[5] = iVar19;" (assignment_expression "piVar29[5] = iVar19" (subscript_expression "piVar29[5]" (identifier "piVar29") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (expression_statement "local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);" (assignment_expression "local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f)" (subscript_expression "local_b0[0x14]" (identifier "local_b0") ([ "[") (number_literal "0x14") (] "]")) (= "=") (binary_expression "local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f)" (subscript_expression "local_b0[0x14]" (identifier "local_b0") ([ "[") (number_literal "0x14") (] "]")) (| "|") (binary_expression "1 << ((byte)iVar19 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)iVar19 & 0x1f)" (( "(") (binary_expression "(byte)iVar19 & 0x1f" (cast_expression "(byte)iVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar19")) (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x00028003;" (goto "goto") (statement_identifier "joined_r0x00028003") (; ";")) (} "}"))) (if_statement "if (cVar17 != '\x11') goto joined_r0x00028003;" (if "if") (parenthesized_expression "(cVar17 != '\x11')" (( "(") (binary_expression "cVar17 != '\x11'" (identifier "cVar17") (!= "!=") (char_literal "'\x11'" (' "'") (escape_sequence "\x11") (' "'"))) () ")")) (goto_statement "goto joined_r0x00028003;" (goto "goto") (statement_identifier "joined_r0x00028003") (; ";"))) (if_statement "if (piVar25 != (int *)0x0) goto code_r0x00028148;" (if "if") (parenthesized_expression "(piVar25 != (int *)0x0)" (( "(") (binary_expression "piVar25 != (int *)0x0" (identifier "piVar25") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto code_r0x00028148;" (goto "goto") (statement_identifier "code_r0x00028148") (; ";"))) (goto_statement "goto LAB_00028038;" (goto "goto") (statement_identifier "LAB_00028038") (; ";")) (} "}"))) (goto_statement "goto LAB_0002809c;" (goto "goto") (statement_identifier "LAB_0002809c") (; ";")) (} "}"))) (expression_statement "local_88 = 0xc;" (assignment_expression "local_88 = 0xc" (identifier "local_88") (= "=") (number_literal "0xc")) (; ";")) (goto_statement "goto LAB_00027c60;" (goto "goto") (statement_identifier "LAB_00027c60") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_00028d28:\n      local_88 = 0xc;" (statement_identifier "LAB_00028d28") (: ":") (expression_statement "local_88 = 0xc;" (assignment_expression "local_88 = 0xc" (identifier "local_88") (= "=") (number_literal "0xc")) (; ";"))) (expression_statement "__ptr[0xd] = 0;" (assignment_expression "__ptr[0xd] = 0" (subscript_expression "__ptr[0xd]" (identifier "__ptr") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00027c60;" (goto "goto") (statement_identifier "LAB_00027c60") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000282d0:\n  local_88 = 0xc;" (statement_identifier "LAB_000282d0") (: ":") (expression_statement "local_88 = 0xc;" (assignment_expression "local_88 = 0xc" (identifier "local_88") (= "=") (number_literal "0xc")) (; ";"))) (goto_statement "goto LAB_000282d8;" (goto "goto") (statement_identifier "LAB_000282d8") (; ";")) (labeled_statement "code_r0x00028148:\n  cVar17 = (char)piVar25[6];" (statement_identifier "code_r0x00028148") (: ":") (expression_statement "cVar17 = (char)piVar25[6];" (assignment_expression "cVar17 = (char)piVar25[6]" (identifier "cVar17") (= "=") (cast_expression "(char)piVar25[6]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar25[6]" (identifier "piVar25") ([ "[") (number_literal "6") (] "]")))) (; ";"))) (expression_statement "piVar24 = (int *)piVar25[1];" (assignment_expression "piVar24 = (int *)piVar25[1]" (identifier "piVar24") (= "=") (cast_expression "(int *)piVar25[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar25[1]" (identifier "piVar25") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "piVar22 = piVar24;" (assignment_expression "piVar22 = piVar24" (identifier "piVar22") (= "=") (identifier "piVar24")) (; ";")) (if_statement "if (cVar17 == '\x11') {\n    iVar19 = piVar25[5];\n    piVar29[1] = (int)piVar24;\n    if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }\n    piVar12[iVar19] = piVar12[piVar29[5]];\n    if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }\njoined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar17 = (char)piVar24[6];\n    piVar22 = (int *)piVar24[1];\n    piVar25 = piVar24;\n  }" (if "if") (parenthesized_expression "(cVar17 == '\x11')" (( "(") (binary_expression "cVar17 == '\x11'" (identifier "cVar17") (== "==") (char_literal "'\x11'" (' "'") (escape_sequence "\x11") (' "'"))) () ")")) (compound_statement "{\n    iVar19 = piVar25[5];\n    piVar29[1] = (int)piVar24;\n    if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }\n    piVar12[iVar19] = piVar12[piVar29[5]];\n    if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }\njoined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }\n    cVar17 = (char)piVar24[6];\n    piVar22 = (int *)piVar24[1];\n    piVar25 = piVar24;\n  }" ({ "{") (expression_statement "iVar19 = piVar25[5];" (assignment_expression "iVar19 = piVar25[5]" (identifier "iVar19") (= "=") (subscript_expression "piVar25[5]" (identifier "piVar25") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "piVar29[1] = (int)piVar24;" (assignment_expression "piVar29[1] = (int)piVar24" (subscript_expression "piVar29[1]" (identifier "piVar29") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24"))) (; ";")) (if_statement "if (piVar24 != (int *)0x0) {\n      *piVar24 = (int)piVar29;\n    }" (if "if") (parenthesized_expression "(piVar24 != (int *)0x0)" (( "(") (binary_expression "piVar24 != (int *)0x0" (identifier "piVar24") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      *piVar24 = (int)piVar29;\n    }" ({ "{") (expression_statement "*piVar24 = (int)piVar29;" (assignment_expression "*piVar24 = (int)piVar29" (pointer_expression "*piVar24" (* "*") (identifier "piVar24")) (= "=") (cast_expression "(int)piVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar29"))) (; ";")) (} "}"))) (expression_statement "piVar12[iVar19] = piVar12[piVar29[5]];" (assignment_expression "piVar12[iVar19] = piVar12[piVar29[5]]" (subscript_expression "piVar12[iVar19]" (identifier "piVar12") ([ "[") (identifier "iVar19") (] "]")) (= "=") (subscript_expression "piVar12[piVar29[5]]" (identifier "piVar12") ([ "[") (subscript_expression "piVar29[5]" (identifier "piVar29") ([ "[") (number_literal "5") (] "]")) (] "]"))) (; ";")) (if_statement "if (iVar19 < 0x20) {\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }" (if "if") (parenthesized_expression "(iVar19 < 0x20)" (( "(") (binary_expression "iVar19 < 0x20" (identifier "iVar19") (< "<") (number_literal "0x20")) () ")")) (compound_statement "{\n      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));\n    }" ({ "{") (expression_statement "local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));" (assignment_expression "local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f))" (subscript_expression "local_b0[0x14]" (identifier "local_b0") ([ "[") (number_literal "0x14") (] "]")) (= "=") (binary_expression "local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f))" (subscript_expression "local_b0[0x14]" (identifier "local_b0") ([ "[") (number_literal "0x14") (] "]")) (& "&") (unary_expression "~(1 << ((byte)iVar19 & 0x1f))" (~ "~") (parenthesized_expression "(1 << ((byte)iVar19 & 0x1f))" (( "(") (binary_expression "1 << ((byte)iVar19 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)iVar19 & 0x1f)" (( "(") (binary_expression "(byte)iVar19 & 0x1f" (cast_expression "(byte)iVar19" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "iVar19")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))))) (; ";")) (} "}"))) (labeled_statement "joined_r0x00028003:\n    if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }" (statement_identifier "joined_r0x00028003") (: ":") (if_statement "if (piVar24 == (int *)0x0) {\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(piVar24 == (int *)0x0)" (( "(") (binary_expression "piVar24 == (int *)0x0" (identifier "piVar24") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00028038:\n      piVar22 = (int *)0x0;\n      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }\n    }" ({ "{") (labeled_statement "LAB_00028038:\n      piVar22 = (int *)0x0;" (statement_identifier "LAB_00028038") (: ":") (expression_statement "piVar22 = (int *)0x0;" (assignment_expression "piVar22 = (int *)0x0" (identifier "piVar22") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (while_statement "while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }" (while "while") (parenthesized_expression "((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0)))" (( "(") (parenthesized_expression "(piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))" (( "(") (comma_expression "piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0)" (assignment_expression "piVar24 = (int *)piVar29[2]" (identifier "piVar24") (= "=") (cast_expression "(int *)piVar29[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar29[2]" (identifier "piVar29") ([ "[") (number_literal "2") (] "]")))) (, ",") (binary_expression "piVar24 == piVar22 || (piVar24 == (int *)0x0)" (binary_expression "piVar24 == piVar22" (identifier "piVar24") (== "==") (identifier "piVar22")) (|| "||") (parenthesized_expression "(piVar24 == (int *)0x0)" (( "(") (binary_expression "piVar24 == (int *)0x0" (identifier "piVar24") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")))) () ")")) () ")")) (compound_statement "{\n        piVar25 = (int *)*piVar29;\n        piVar22 = piVar29;\n        piVar29 = piVar25;\n        if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }\n      }" ({ "{") (expression_statement "piVar25 = (int *)*piVar29;" (assignment_expression "piVar25 = (int *)*piVar29" (identifier "piVar25") (= "=") (cast_expression "(int *)*piVar29" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar29" (* "*") (identifier "piVar29")))) (; ";")) (expression_statement "piVar22 = piVar29;" (assignment_expression "piVar22 = piVar29" (identifier "piVar22") (= "=") (identifier "piVar29")) (; ";")) (expression_statement "piVar29 = piVar25;" (assignment_expression "piVar29 = piVar25" (identifier "piVar29") (= "=") (identifier "piVar25")) (; ";")) (if_statement "if (piVar25 == (int *)0x0) {\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }" (if "if") (parenthesized_expression "(piVar25 == (int *)0x0)" (( "(") (binary_expression "piVar25 == (int *)0x0" (identifier "piVar25") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          if (iVar7 == 0) goto LAB_00028074;\n          iVar19 = *piVar12;\n          if (iVar19 == 0) goto LAB_0002806d;\n          goto LAB_0002809c;\n        }" ({ "{") (if_statement "if (iVar7 == 0) goto LAB_00028074;" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00028074;" (goto "goto") (statement_identifier "LAB_00028074") (; ";"))) (expression_statement "iVar19 = *piVar12;" (assignment_expression "iVar19 = *piVar12" (identifier "iVar19") (= "=") (pointer_expression "*piVar12" (* "*") (identifier "piVar12"))) (; ";")) (if_statement "if (iVar19 == 0) goto LAB_0002806d;" (if "if") (parenthesized_expression "(iVar19 == 0)" (( "(") (binary_expression "iVar19 == 0" (identifier "iVar19") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002806d;" (goto "goto") (statement_identifier "LAB_0002806d") (; ";"))) (goto_statement "goto LAB_0002809c;" (goto "goto") (statement_identifier "LAB_0002809c") (; ";")) (} "}"))) (} "}"))) (} "}")))) (expression_statement "cVar17 = (char)piVar24[6];" (assignment_expression "cVar17 = (char)piVar24[6]" (identifier "cVar17") (= "=") (cast_expression "(char)piVar24[6]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar24[6]" (identifier "piVar24") ([ "[") (number_literal "6") (] "]")))) (; ";")) (expression_statement "piVar22 = (int *)piVar24[1];" (assignment_expression "piVar22 = (int *)piVar24[1]" (identifier "piVar22") (= "=") (cast_expression "(int *)piVar24[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar24[1]" (identifier "piVar24") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "piVar25 = piVar24;" (assignment_expression "piVar25 = piVar24" (identifier "piVar25") (= "=") (identifier "piVar24")) (; ";")) (} "}"))) (goto_statement "goto LAB_00028010;" (goto "goto") (statement_identifier "LAB_00028010") (; ";")) (while_statement "while (piVar12[iVar19] == iVar19) {\nLAB_0002806d:\n    iVar19 = iVar19 + 1;\n    if (iVar19 == iVar7) goto LAB_00028074;\n  }" (while "while") (parenthesized_expression "(piVar12[iVar19] == iVar19)" (( "(") (binary_expression "piVar12[iVar19] == iVar19" (subscript_expression "piVar12[iVar19]" (identifier "piVar12") ([ "[") (identifier "iVar19") (] "]")) (== "==") (identifier "iVar19")) () ")")) (compound_statement "{\nLAB_0002806d:\n    iVar19 = iVar19 + 1;\n    if (iVar19 == iVar7) goto LAB_00028074;\n  }" ({ "{") (labeled_statement "LAB_0002806d:\n    iVar19 = iVar19 + 1;" (statement_identifier "LAB_0002806d") (: ":") (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" (identifier "iVar19") (= "=") (binary_expression "iVar19 + 1" (identifier "iVar19") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if (iVar19 == iVar7) goto LAB_00028074;" (if "if") (parenthesized_expression "(iVar19 == iVar7)" (( "(") (binary_expression "iVar19 == iVar7" (identifier "iVar19") (== "==") (identifier "iVar7")) () ")")) (goto_statement "goto LAB_00028074;" (goto "goto") (statement_identifier "LAB_00028074") (; ";"))) (} "}"))) (labeled_statement "LAB_0002809c:\n  do {\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  } while (piVar21 != (int *)0x0);" (statement_identifier "LAB_0002809c") (: ":") (do_statement "do {\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  } while (piVar21 != (int *)0x0);" (do "do") (compound_statement "{\n    piVar22 = (int *)piVar21[1];\n    piVar12 = piVar21;\n    while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }\n    piVar21 = (int *)piVar12[2];\n  }" ({ "{") (expression_statement "piVar22 = (int *)piVar21[1];" (assignment_expression "piVar22 = (int *)piVar21[1]" (identifier "piVar22") (= "=") (cast_expression "(int *)piVar21[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar21[1]" (identifier "piVar21") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "piVar12 = piVar21;" (assignment_expression "piVar12 = piVar21" (identifier "piVar12") (= "=") (identifier "piVar21")) (; ";")) (while_statement "while (piVar21 = piVar22, piVar21 != (int *)0x0) {\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }" (while "while") (parenthesized_expression "(piVar21 = piVar22, piVar21 != (int *)0x0)" (( "(") (comma_expression "piVar21 = piVar22, piVar21 != (int *)0x0" (assignment_expression "piVar21 = piVar22" (identifier "piVar21") (= "=") (identifier "piVar22")) (, ",") (binary_expression "piVar21 != (int *)0x0" (identifier "piVar21") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n      piVar12 = piVar21;\n      piVar22 = (int *)piVar21[1];\n    }" ({ "{") (expression_statement "piVar12 = piVar21;" (assignment_expression "piVar12 = piVar21" (identifier "piVar12") (= "=") (identifier "piVar21")) (; ";")) (expression_statement "piVar22 = (int *)piVar21[1];" (assignment_expression "piVar22 = (int *)piVar21[1]" (identifier "piVar22") (= "=") (cast_expression "(int *)piVar21[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar21[1]" (identifier "piVar21") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (expression_statement "piVar21 = (int *)piVar12[2];" (assignment_expression "piVar21 = (int *)piVar12[2]" (identifier "piVar21") (= "=") (cast_expression "(int *)piVar12[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar12[2]" (identifier "piVar12") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar21 != (int *)0x0)" (( "(") (binary_expression "piVar21 != (int *)0x0" (identifier "piVar21") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";"))) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar21 = (int *)0x0;" (assignment_expression "piVar21 = (int *)0x0" (identifier "piVar21") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (do_statement "do {\n    local_80 = 0;\n    if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }\n    piVar22 = (int *)*piVar12;\n    if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }\n    piVar21 = (int *)piVar22[2];\n    if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;\n    iVar7 = piVar22[1];\n    piVar12 = piVar22;\n  } while( true );" (do "do") (compound_statement "{\n    local_80 = 0;\n    if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }\n    piVar22 = (int *)*piVar12;\n    if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }\n    piVar21 = (int *)piVar22[2];\n    if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;\n    iVar7 = piVar22[1];\n    piVar12 = piVar22;\n  }" ({ "{") (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" (identifier "local_80") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }\n    else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }" (if "if") (parenthesized_expression "((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11'))" (( "(") (binary_expression "(iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')" (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(char *)(iVar7 + 0x18) != '\x11')" (( "(") (binary_expression "*(char *)(iVar7 + 0x18) != '\x11'" (pointer_expression "*(char *)(iVar7 + 0x18)" (* "*") (cast_expression "(char *)(iVar7 + 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x18)" (( "(") (binary_expression "iVar7 + 0x18" (identifier "iVar7") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (char_literal "'\x11'" (' "'") (escape_sequence "\x11") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }\n    }" ({ "{") (if_statement "if (piVar21 != (int *)0x0) {\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }" (if "if") (parenthesized_expression "(piVar21 != (int *)0x0)" (( "(") (binary_expression "piVar21 != (int *)0x0" (identifier "piVar21") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        cVar17 = (char)piVar21[6];\n        goto joined_r0x000280c8;\n      }" ({ "{") (expression_statement "cVar17 = (char)piVar21[6];" (assignment_expression "cVar17 = (char)piVar21[6]" (identifier "cVar17") (= "=") (cast_expression "(char)piVar21[6]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar21[6]" (identifier "piVar21") ([ "[") (number_literal "6") (] "]")))) (; ";")) (goto_statement "goto joined_r0x000280c8;" (goto "goto") (statement_identifier "joined_r0x000280c8") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }" (else "else") (compound_statement "{\n      puVar8 = (undefined4 *)FUN_00020ab0();\n      piVar12[1] = (int)puVar8;\n      if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }\n      if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }\n      iVar7 = local_80;\n      if (local_80 != 0) goto LAB_00028335;\n    }" ({ "{") (expression_statement "puVar8 = (undefined4 *)FUN_00020ab0();" (assignment_expression "puVar8 = (undefined4 *)FUN_00020ab0()" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)FUN_00020ab0()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00020ab0()" (identifier "FUN_00020ab0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "piVar12[1] = (int)puVar8;" (assignment_expression "piVar12[1] = (int)puVar8" (subscript_expression "piVar12[1]" (identifier "piVar12") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) (; ";")) (if_statement "if (puVar8 != (undefined4 *)0x0) {\n        *puVar8 = piVar12;\n      }" (if "if") (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar8 != (undefined4 *)0x0" (identifier "puVar8") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *puVar8 = piVar12;\n      }" ({ "{") (expression_statement "*puVar8 = piVar12;" (assignment_expression "*puVar8 = piVar12" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "piVar12")) (; ";")) (} "}"))) (if_statement "if (piVar12[2] != 0) {\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }" (if "if") (parenthesized_expression "(piVar12[2] != 0)" (( "(") (binary_expression "piVar12[2] != 0" (subscript_expression "piVar12[2]" (identifier "piVar12") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        cVar17 = *(char *)(piVar12[2] + 0x18);\njoined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }\n      }" ({ "{") (expression_statement "cVar17 = *(char *)(piVar12[2] + 0x18);" (assignment_expression "cVar17 = *(char *)(piVar12[2] + 0x18)" (identifier "cVar17") (= "=") (pointer_expression "*(char *)(piVar12[2] + 0x18)" (* "*") (cast_expression "(char *)(piVar12[2] + 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar12[2] + 0x18)" (( "(") (binary_expression "piVar12[2] + 0x18" (subscript_expression "piVar12[2]" (identifier "piVar12") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (labeled_statement "joined_r0x000280c8:\n        if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }" (statement_identifier "joined_r0x000280c8") (: ":") (if_statement "if (cVar17 == '\x11') {\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }" (if "if") (parenthesized_expression "(cVar17 == '\x11')" (( "(") (binary_expression "cVar17 == '\x11'" (identifier "cVar17") (== "==") (char_literal "'\x11'" (' "'") (escape_sequence "\x11") (' "'"))) () ")")) (compound_statement "{\n          puVar8 = (undefined4 *)FUN_00020ab0();\n          piVar12[2] = (int)puVar8;\n          if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }\n        }" ({ "{") (expression_statement "puVar8 = (undefined4 *)FUN_00020ab0();" (assignment_expression "puVar8 = (undefined4 *)FUN_00020ab0()" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)FUN_00020ab0()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00020ab0()" (identifier "FUN_00020ab0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "piVar12[2] = (int)puVar8;" (assignment_expression "piVar12[2] = (int)puVar8" (subscript_expression "piVar12[2]" (identifier "piVar12") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) (; ";")) (if_statement "if (puVar8 != (undefined4 *)0x0) {\n            *puVar8 = piVar12;\n          }" (if "if") (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar8 != (undefined4 *)0x0" (identifier "puVar8") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            *puVar8 = piVar12;\n          }" ({ "{") (expression_statement "*puVar8 = piVar12;" (assignment_expression "*puVar8 = piVar12" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "piVar12")) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "iVar7 = local_80;" (assignment_expression "iVar7 = local_80" (identifier "iVar7") (= "=") (identifier "local_80")) (; ";")) (if_statement "if (local_80 != 0) goto LAB_00028335;" (if "if") (parenthesized_expression "(local_80 != 0)" (( "(") (binary_expression "local_80 != 0" (identifier "local_80") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00028335;" (goto "goto") (statement_identifier "LAB_00028335") (; ";"))) (} "}")))) (expression_statement "piVar22 = (int *)*piVar12;" (assignment_expression "piVar22 = (int *)*piVar12" (identifier "piVar22") (= "=") (cast_expression "(int *)*piVar12" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar12" (* "*") (identifier "piVar12")))) (; ";")) (if_statement "if (piVar22 == (int *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }" (if "if") (parenthesized_expression "(piVar22 == (int *)0x0)" (( "(") (binary_expression "piVar22 == (int *)0x0" (identifier "piVar22") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      puVar8 = (undefined4 *)local_b0[0xd];\n      goto LAB_000281a0;\n    }" ({ "{") (expression_statement "puVar8 = (undefined4 *)local_b0[0xd];" (assignment_expression "puVar8 = (undefined4 *)local_b0[0xd]" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)local_b0[0xd]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_b0[0xd]" (identifier "local_b0") ([ "[") (number_literal "0xd") (] "]")))) (; ";")) (goto_statement "goto LAB_000281a0;" (goto "goto") (statement_identifier "LAB_000281a0") (; ";")) (} "}"))) (expression_statement "piVar21 = (int *)piVar22[2];" (assignment_expression "piVar21 = (int *)piVar22[2]" (identifier "piVar21") (= "=") (cast_expression "(int *)piVar22[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar22[2]" (identifier "piVar22") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;" (if "if") (parenthesized_expression "((piVar21 != (int *)0x0) && (piVar12 != piVar21))" (( "(") (binary_expression "(piVar21 != (int *)0x0) && (piVar12 != piVar21)" (parenthesized_expression "(piVar21 != (int *)0x0)" (( "(") (binary_expression "piVar21 != (int *)0x0" (identifier "piVar21") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(piVar12 != piVar21)" (( "(") (binary_expression "piVar12 != piVar21" (identifier "piVar12") (!= "!=") (identifier "piVar21")) () ")"))) () ")")) (goto_statement "goto LAB_0002809c;" (goto "goto") (statement_identifier "LAB_0002809c") (; ";"))) (expression_statement "iVar7 = piVar22[1];" (assignment_expression "iVar7 = piVar22[1]" (identifier "iVar7") (= "=") (subscript_expression "piVar22[1]" (identifier "piVar22") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar12 = piVar22;" (assignment_expression "piVar12 = piVar22" (identifier "piVar12") (= "=") (identifier "piVar22")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (labeled_statement "LAB_00028074:\n  free(piVar12);" (statement_identifier "LAB_00028074") (: ":") (expression_statement "free(piVar12);" (call_expression "free(piVar12)" (identifier "free") (argument_list "(piVar12)" (( "(") (identifier "piVar12") () ")"))) (; ";"))) (expression_statement "local_b0[0x21] = 0;" (assignment_expression "local_b0[0x21] = 0" (subscript_expression "local_b0[0x21]" (identifier "local_b0") ([ "[") (number_literal "0x21") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar21 = (int *)local_b0[0xd];" (assignment_expression "piVar21 = (int *)local_b0[0xd]" (identifier "piVar21") (= "=") (cast_expression "(int *)local_b0[0xd]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_b0[0xd]" (identifier "local_b0") ([ "[") (number_literal "0xd") (] "]")))) (; ";")) (goto_statement "goto LAB_0002809c;" (goto "goto") (statement_identifier "LAB_0002809c") (; ";")) (labeled_statement "LAB_000281a0:\n  do {\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  } while ((undefined4 *)puVar16[2] != (undefined4 *)0x0);" (statement_identifier "LAB_000281a0") (: ":") (do_statement "do {\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  } while ((undefined4 *)puVar16[2] != (undefined4 *)0x0);" (do "do") (compound_statement "{\n    do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);\n    puVar8 = (undefined4 *)puVar16[2];\n  }" ({ "{") (do_statement "do {\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);" (do "do") (compound_statement "{\n      puVar16 = puVar8;\n      puVar8 = (undefined4 *)puVar16[1];\n    }" ({ "{") (expression_statement "puVar16 = puVar8;" (assignment_expression "puVar16 = puVar8" (identifier "puVar16") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "puVar8 = (undefined4 *)puVar16[1];" (assignment_expression "puVar8 = (undefined4 *)puVar16[1]" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)puVar16[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar16[1]" (identifier "puVar16") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined4 *)puVar16[1] != (undefined4 *)0x0)" (( "(") (binary_expression "(undefined4 *)puVar16[1] != (undefined4 *)0x0" (cast_expression "(undefined4 *)puVar16[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar16[1]" (identifier "puVar16") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar8 = (undefined4 *)puVar16[2];" (assignment_expression "puVar8 = (undefined4 *)puVar16[2]" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)puVar16[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar16[2]" (identifier "puVar16") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined4 *)puVar16[2] != (undefined4 *)0x0)" (( "(") (binary_expression "(undefined4 *)puVar16[2] != (undefined4 *)0x0" (cast_expression "(undefined4 *)puVar16[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar16[2]" (identifier "puVar16") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";"))) (do_statement "do {\n    if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    puVar8 = (undefined4 *)puVar13[2];\n    bVar35 = puVar16 == puVar8;\n    puVar16 = puVar13;\n  } while (puVar8 == (undefined4 *)0x0 || bVar35);" (do "do") (compound_statement "{\n    if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }\n    puVar8 = (undefined4 *)puVar13[2];\n    bVar35 = puVar16 == puVar8;\n    puVar16 = puVar13;\n  }" ({ "{") (if_statement "if (*(char *)(puVar16 + 6) == '\x10') {\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }\n    else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }" (if "if") (parenthesized_expression "(*(char *)(puVar16 + 6) == '\x10')" (( "(") (binary_expression "*(char *)(puVar16 + 6) == '\x10'" (pointer_expression "*(char *)(puVar16 + 6)" (* "*") (cast_expression "(char *)(puVar16 + 6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 6)" (( "(") (binary_expression "puVar16 + 6" (identifier "puVar16") (+ "+") (number_literal "6")) () ")")))) (== "==") (char_literal "'\x10'" (' "'") (escape_sequence "\x10") (' "'"))) () ")")) (compound_statement "{\n      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);\n      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);\n      puVar16[7] = uVar2;\nLAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;\n    }" ({ "{") (expression_statement "uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);" (assignment_expression "uVar2 = *(undefined4 *)(puVar16[1] + 0x1c)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(puVar16[1] + 0x1c)" (* "*") (cast_expression "(undefined4 *)(puVar16[1] + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16[1] + 0x1c)" (( "(") (binary_expression "puVar16[1] + 0x1c" (subscript_expression "puVar16[1]" (identifier "puVar16") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);" (assignment_expression "puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc)" (subscript_expression "puVar16[3]" (identifier "puVar16") ([ "[") (number_literal "3") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(puVar16[1] + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar16[1] + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16[1] + 0xc)" (( "(") (binary_expression "puVar16[1] + 0xc" (subscript_expression "puVar16[1]" (identifier "puVar16") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "puVar16[7] = uVar2;" (assignment_expression "puVar16[7] = uVar2" (subscript_expression "puVar16[7]" (identifier "puVar16") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (labeled_statement "LAB_000281c7:\n      puVar13 = (undefined4 *)*puVar16;" (statement_identifier "LAB_000281c7") (: ":") (expression_statement "puVar13 = (undefined4 *)*puVar16;" (assignment_expression "puVar13 = (undefined4 *)*puVar16" (identifier "puVar13") (= "=") (cast_expression "(undefined4 *)*puVar16" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar16" (* "*") (identifier "puVar16")))) (; ";"))) (} "}")) (else_clause "else {\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }" (else "else") (compound_statement "{\n      puVar16[3] = puVar16;\n      iVar7 = FUN_00018d20();\n      puVar16[7] = iVar7;\n      if (iVar7 == -1) goto LAB_00028330;\n      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;\n      *(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;\n      puVar13 = (undefined4 *)*puVar16;\n    }" ({ "{") (expression_statement "puVar16[3] = puVar16;" (assignment_expression "puVar16[3] = puVar16" (subscript_expression "puVar16[3]" (identifier "puVar16") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "puVar16")) (; ";")) (expression_statement "iVar7 = FUN_00018d20();" (assignment_expression "iVar7 = FUN_00018d20()" (identifier "iVar7") (= "=") (call_expression "FUN_00018d20()" (identifier "FUN_00018d20") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar16[7] = iVar7;" (assignment_expression "puVar16[7] = iVar7" (subscript_expression "puVar16[7]" (identifier "puVar16") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar7")) (; ";")) (if_statement "if (iVar7 == -1) goto LAB_00028330;" (if "if") (parenthesized_expression "(iVar7 == -1)" (( "(") (binary_expression "iVar7 == -1" (identifier "iVar7") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_00028330;" (goto "goto") (statement_identifier "LAB_00028330") (; ";"))) (if_statement "if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;" (if "if") (parenthesized_expression "(*(char *)(puVar16 + 6) != '\f')" (( "(") (binary_expression "*(char *)(puVar16 + 6) != '\f'" (pointer_expression "*(char *)(puVar16 + 6)" (* "*") (cast_expression "(char *)(puVar16 + 6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 6)" (( "(") (binary_expression "puVar16 + 6" (identifier "puVar16") (+ "+") (number_literal "6")) () ")")))) (!= "!=") (char_literal "'\f'" (' "'") (escape_sequence "\f") (' "'"))) () ")")) (goto_statement "goto LAB_000281c7;" (goto "goto") (statement_identifier "LAB_000281c7") (; ";"))) (expression_statement "*(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;" (assignment_expression "*(uint *)(*local_b0 + 4 + iVar7 * 8) =\n           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8" (pointer_expression "*(uint *)(*local_b0 + 4 + iVar7 * 8)" (* "*") (cast_expression "(uint *)(*local_b0 + 4 + iVar7 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*local_b0 + 4 + iVar7 * 8)" (( "(") (binary_expression "*local_b0 + 4 + iVar7 * 8" (binary_expression "*local_b0 + 4" (pointer_expression "*local_b0" (* "*") (identifier "local_b0")) (+ "+") (number_literal "4")) (+ "+") (binary_expression "iVar7 * 8" (identifier "iVar7") (* "*") (number_literal "8"))) () ")")))) (= "=") (binary_expression "*(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8" (binary_expression "*(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff" (pointer_expression "*(uint *)(*local_b0 + 4 + iVar7 * 8)" (* "*") (cast_expression "(uint *)(*local_b0 + 4 + iVar7 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*local_b0 + 4 + iVar7 * 8)" (( "(") (binary_expression "*local_b0 + 4 + iVar7 * 8" (binary_expression "*local_b0 + 4" (pointer_expression "*local_b0" (* "*") (identifier "local_b0")) (+ "+") (number_literal "4")) (+ "+") (binary_expression "iVar7 * 8" (identifier "iVar7") (* "*") (number_literal "8"))) () ")")))) (& "&") (number_literal "0xfffc00ff")) (| "|") (binary_expression "(puVar16[5] & 0x3ff) << 8" (parenthesized_expression "(puVar16[5] & 0x3ff)" (( "(") (binary_expression "puVar16[5] & 0x3ff" (subscript_expression "puVar16[5]" (identifier "puVar16") ([ "[") (number_literal "5") (] "]")) (& "&") (number_literal "0x3ff")) () ")")) (<< "<<") (number_literal "8")))) (; ";")) (expression_statement "puVar13 = (undefined4 *)*puVar16;" (assignment_expression "puVar13 = (undefined4 *)*puVar16" (identifier "puVar13") (= "=") (cast_expression "(undefined4 *)*puVar16" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar16" (* "*") (identifier "puVar16")))) (; ";")) (} "}")))) (if_statement "if (puVar13 == (undefined4 *)0x0) {\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }" (if "if") (parenthesized_expression "(puVar13 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar13 == (undefined4 *)0x0" (identifier "puVar13") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      puVar8 = (undefined4 *)local_b0[0xd];\n      cVar17 = *(char *)(puVar8 + 6);\n      puVar16 = (undefined4 *)puVar8[1];\n      puVar13 = puVar8;\n      if (cVar17 == '\v') goto LAB_00028283;\n      goto LAB_00028250;\n    }" ({ "{") (expression_statement "puVar8 = (undefined4 *)local_b0[0xd];" (assignment_expression "puVar8 = (undefined4 *)local_b0[0xd]" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)local_b0[0xd]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_b0[0xd]" (identifier "local_b0") ([ "[") (number_literal "0xd") (] "]")))) (; ";")) (expression_statement "cVar17 = *(char *)(puVar8 + 6);" (assignment_expression "cVar17 = *(char *)(puVar8 + 6)" (identifier "cVar17") (= "=") (pointer_expression "*(char *)(puVar8 + 6)" (* "*") (cast_expression "(char *)(puVar8 + 6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 6)" (( "(") (binary_expression "puVar8 + 6" (identifier "puVar8") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "puVar16 = (undefined4 *)puVar8[1];" (assignment_expression "puVar16 = (undefined4 *)puVar8[1]" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)puVar8[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "puVar13 = puVar8;" (assignment_expression "puVar13 = puVar8" (identifier "puVar13") (= "=") (identifier "puVar8")) (; ";")) (if_statement "if (cVar17 == '\v') goto LAB_00028283;" (if "if") (parenthesized_expression "(cVar17 == '\v')" (( "(") (binary_expression "cVar17 == '\v'" (identifier "cVar17") (== "==") (char_literal "'\v'" (' "'") (escape_sequence "\v") (' "'"))) () ")")) (goto_statement "goto LAB_00028283;" (goto "goto") (statement_identifier "LAB_00028283") (; ";"))) (goto_statement "goto LAB_00028250;" (goto "goto") (statement_identifier "LAB_00028250") (; ";")) (} "}"))) (expression_statement "puVar8 = (undefined4 *)puVar13[2];" (assignment_expression "puVar8 = (undefined4 *)puVar13[2]" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)puVar13[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar13[2]" (identifier "puVar13") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "bVar35 = puVar16 == puVar8;" (assignment_expression "bVar35 = puVar16 == puVar8" (identifier "bVar35") (= "=") (binary_expression "puVar16 == puVar8" (identifier "puVar16") (== "==") (identifier "puVar8"))) (; ";")) (expression_statement "puVar16 = puVar13;" (assignment_expression "puVar16 = puVar13" (identifier "puVar16") (= "=") (identifier "puVar13")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar8 == (undefined4 *)0x0 || bVar35)" (( "(") (binary_expression "puVar8 == (undefined4 *)0x0 || bVar35" (binary_expression "puVar8 == (undefined4 *)0x0" (identifier "puVar8") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (|| "||") (identifier "bVar35")) () ")")) (; ";")) (goto_statement "goto LAB_000281a0;" (goto "goto") (statement_identifier "LAB_000281a0") (; ";")) (labeled_statement "LAB_00028250:\n  if (cVar17 == '\x10') {\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }\n  else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }" (statement_identifier "LAB_00028250") (: ":") (if_statement "if (cVar17 == '\x10') {\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }\n  else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }" (if "if") (parenthesized_expression "(cVar17 == '\x10')" (( "(") (binary_expression "cVar17 == '\x10'" (identifier "cVar17") (== "==") (char_literal "'\x10'" (' "'") (escape_sequence "\x10") (' "'"))) () ")")) (compound_statement "{\n    iVar7 = puVar13[2];\n    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);\n    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];\n  }" ({ "{") (expression_statement "iVar7 = puVar13[2];" (assignment_expression "iVar7 = puVar13[2]" (identifier "iVar7") (= "=") (subscript_expression "puVar13[2]" (identifier "puVar13") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar16[4] = *(undefined4 *)(iVar7 + 0xc);" (assignment_expression "puVar16[4] = *(undefined4 *)(iVar7 + 0xc)" (subscript_expression "puVar16[4]" (identifier "puVar16") ([ "[") (number_literal "4") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(iVar7 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar7 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0xc)" (( "(") (binary_expression "iVar7 + 0xc" (identifier "iVar7") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar7 + 0x10) = puVar13[4];" (assignment_expression "*(undefined4 *)(iVar7 + 0x10) = puVar13[4]" (pointer_expression "*(undefined4 *)(iVar7 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar7 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x10)" (( "(") (binary_expression "iVar7 + 0x10" (identifier "iVar7") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (subscript_expression "puVar13[4]" (identifier "puVar13") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }" (else "else") (compound_statement "{\n    if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }\n    puVar30 = (undefined4 *)puVar13[2];\n    if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }\n  }" ({ "{") (if_statement "if (puVar16 != (undefined4 *)0x0) {\n      puVar16[4] = puVar13[4];\n    }" (if "if") (parenthesized_expression "(puVar16 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar16 != (undefined4 *)0x0" (identifier "puVar16") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      puVar16[4] = puVar13[4];\n    }" ({ "{") (expression_statement "puVar16[4] = puVar13[4];" (assignment_expression "puVar16[4] = puVar13[4]" (subscript_expression "puVar16[4]" (identifier "puVar16") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar13[4]" (identifier "puVar13") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}"))) (expression_statement "puVar30 = (undefined4 *)puVar13[2];" (assignment_expression "puVar30 = (undefined4 *)puVar13[2]" (identifier "puVar30") (= "=") (cast_expression "(undefined4 *)puVar13[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar13[2]" (identifier "puVar13") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (puVar30 == (undefined4 *)0x0) {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }\n    else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }" (if "if") (parenthesized_expression "(puVar30 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar30 == (undefined4 *)0x0" (identifier "puVar30") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }\n    }" ({ "{") (if_statement "if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }" (if "if") (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar16 == (undefined4 *)0x0" (identifier "puVar16") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        puVar16 = (undefined4 *)*puVar13;\n        while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }\n      }" ({ "{") (expression_statement "puVar16 = (undefined4 *)*puVar13;" (assignment_expression "puVar16 = (undefined4 *)*puVar13" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)*puVar13" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar13" (* "*") (identifier "puVar13")))) (; ";")) (while_statement "while( true ) {\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          puVar30 = puVar16;\n          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;\n          puVar16 = (undefined4 *)puVar30[2];\n          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;\n          puVar16 = (undefined4 *)*puVar30;\n          puVar13 = puVar30;\n        }" ({ "{") (expression_statement "puVar30 = puVar16;" (assignment_expression "puVar30 = puVar16" (identifier "puVar30") (= "=") (identifier "puVar16")) (; ";")) (if_statement "if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;" (if "if") (parenthesized_expression "(puVar30 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar30 == (undefined4 *)0x0" (identifier "puVar30") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00028398;" (goto "goto") (statement_identifier "LAB_00028398") (; ";"))) (expression_statement "puVar16 = (undefined4 *)puVar30[2];" (assignment_expression "puVar16 = (undefined4 *)puVar30[2]" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)puVar30[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar30[2]" (identifier "puVar30") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;" (if "if") (parenthesized_expression "((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13))" (( "(") (binary_expression "(puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)" (parenthesized_expression "(puVar16 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar16 != (undefined4 *)0x0" (identifier "puVar16") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(puVar16 != puVar13)" (( "(") (binary_expression "puVar16 != puVar13" (identifier "puVar16") (!= "!=") (identifier "puVar13")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar16 = (undefined4 *)*puVar30;" (assignment_expression "puVar16 = (undefined4 *)*puVar30" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)*puVar30" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar30" (* "*") (identifier "puVar30")))) (; ";")) (expression_statement "puVar13 = puVar30;" (assignment_expression "puVar13 = puVar30" (identifier "puVar13") (= "=") (identifier "puVar30")) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }" (else "else") (compound_statement "{\n      if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }\n      puVar30[4] = puVar13[4];\n    }" ({ "{") (if_statement "if (puVar16 == (undefined4 *)0x0) {\n        puVar16 = puVar30;\n      }" (if "if") (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar16 == (undefined4 *)0x0" (identifier "puVar16") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        puVar16 = puVar30;\n      }" ({ "{") (expression_statement "puVar16 = puVar30;" (assignment_expression "puVar16 = puVar30" (identifier "puVar16") (= "=") (identifier "puVar30")) (; ";")) (} "}"))) (expression_statement "puVar30[4] = puVar13[4];" (assignment_expression "puVar30[4] = puVar13[4]" (subscript_expression "puVar30[4]" (identifier "puVar30") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar13[4]" (identifier "puVar13") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}")))) (} "}"))))) (while_statement "while( true ) {\n    cVar17 = *(char *)(puVar16 + 6);\n    puVar30 = puVar16 + 1;\n    puVar13 = puVar16;\n    puVar16 = (undefined4 *)*puVar30;\n    if (cVar17 != '\v') break;\nLAB_00028283:\n    puVar16[4] = puVar13;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    cVar17 = *(char *)(puVar16 + 6);\n    puVar30 = puVar16 + 1;\n    puVar13 = puVar16;\n    puVar16 = (undefined4 *)*puVar30;\n    if (cVar17 != '\v') break;\nLAB_00028283:\n    puVar16[4] = puVar13;\n  }" ({ "{") (expression_statement "cVar17 = *(char *)(puVar16 + 6);" (assignment_expression "cVar17 = *(char *)(puVar16 + 6)" (identifier "cVar17") (= "=") (pointer_expression "*(char *)(puVar16 + 6)" (* "*") (cast_expression "(char *)(puVar16 + 6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 6)" (( "(") (binary_expression "puVar16 + 6" (identifier "puVar16") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "puVar30 = puVar16 + 1;" (assignment_expression "puVar30 = puVar16 + 1" (identifier "puVar30") (= "=") (binary_expression "puVar16 + 1" (identifier "puVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar13 = puVar16;" (assignment_expression "puVar13 = puVar16" (identifier "puVar13") (= "=") (identifier "puVar16")) (; ";")) (expression_statement "puVar16 = (undefined4 *)*puVar30;" (assignment_expression "puVar16 = (undefined4 *)*puVar30" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)*puVar30" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar30" (* "*") (identifier "puVar30")))) (; ";")) (if_statement "if (cVar17 != '\v') break;" (if "if") (parenthesized_expression "(cVar17 != '\v')" (( "(") (binary_expression "cVar17 != '\v'" (identifier "cVar17") (!= "!=") (char_literal "'\v'" (' "'") (escape_sequence "\v") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00028283:\n    puVar16[4] = puVar13;" (statement_identifier "LAB_00028283") (: ":") (expression_statement "puVar16[4] = puVar13;" (assignment_expression "puVar16[4] = puVar13" (subscript_expression "puVar16[4]" (identifier "puVar16") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "puVar13")) (; ";"))) (} "}"))) (goto_statement "goto LAB_00028250;" (goto "goto") (statement_identifier "LAB_00028250") (; ";")) (while_statement "while (puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0) {\n    while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }\n  }" (while "while") (parenthesized_expression "(puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0)" (( "(") (comma_expression "puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0" (assignment_expression "puVar13 = (undefined4 *)*puVar30" (identifier "puVar13") (= "=") (cast_expression "(undefined4 *)*puVar30" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar30" (* "*") (identifier "puVar30")))) (, ",") (comma_expression "puVar16 = puVar30,\n        (undefined4 *)*puVar30 != (undefined4 *)0x0" (assignment_expression "puVar16 = puVar30" (identifier "puVar16") (= "=") (identifier "puVar30")) (, ",") (binary_expression "(undefined4 *)*puVar30 != (undefined4 *)0x0" (cast_expression "(undefined4 *)*puVar30" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar30" (* "*") (identifier "puVar30"))) (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))))) () ")")) (compound_statement "{\n    while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }\n  }" ({ "{") (while_statement "while( true ) {\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      puVar30 = puVar13;\n      puVar8 = (undefined4 *)puVar30[2];\n      bVar35 = puVar8 == puVar16;\n      if (bVar35 || puVar8 == (undefined4 *)0x0) break;\nLAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);\n    }" ({ "{") (expression_statement "puVar30 = puVar13;" (assignment_expression "puVar30 = puVar13" (identifier "puVar30") (= "=") (identifier "puVar13")) (; ";")) (expression_statement "puVar8 = (undefined4 *)puVar30[2];" (assignment_expression "puVar8 = (undefined4 *)puVar30[2]" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)puVar30[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar30[2]" (identifier "puVar30") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "bVar35 = puVar8 == puVar16;" (assignment_expression "bVar35 = puVar8 == puVar16" (identifier "bVar35") (= "=") (binary_expression "puVar8 == puVar16" (identifier "puVar8") (== "==") (identifier "puVar16"))) (; ";")) (if_statement "if (bVar35 || puVar8 == (undefined4 *)0x0) break;" (if "if") (parenthesized_expression "(bVar35 || puVar8 == (undefined4 *)0x0)" (( "(") (binary_expression "bVar35 || puVar8 == (undefined4 *)0x0" (identifier "bVar35") (|| "||") (binary_expression "puVar8 == (undefined4 *)0x0" (identifier "puVar8") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00028398:\n      do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);" (statement_identifier "LAB_00028398") (: ":") (do_statement "do {\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      } while (puVar16 != (undefined4 *)0x0);" (do "do") (compound_statement "{\n        bVar37 = *(byte *)(puVar8 + 6);\n        if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }\n        if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }\n        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);\n        puVar16 = (undefined4 *)puVar8[1];\n        puVar13 = puVar8;\n        puVar8 = puVar16;\n      }" ({ "{") (expression_statement "bVar37 = *(byte *)(puVar8 + 6);" (assignment_expression "bVar37 = *(byte *)(puVar8 + 6)" (identifier "bVar37") (= "=") (pointer_expression "*(byte *)(puVar8 + 6)" (* "*") (cast_expression "(byte *)(puVar8 + 6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 6)" (( "(") (binary_expression "puVar8 + 6" (identifier "puVar8") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (if_statement "if (bVar37 < 0x11) {\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }" (if "if") (parenthesized_expression "(bVar37 < 0x11)" (( "(") (binary_expression "bVar37 < 0x11" (identifier "bVar37") (< "<") (number_literal "0x11")) () ")")) (compound_statement "{\n                    \n                    \n          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();\n          return iVar7;\n        }" ({ "{") (expression_statement "iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ();" (assignment_expression "iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ()" (identifier "iVar7") (= "=") (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))\n                            ()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))" (( "(") (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669)" (* "*") (cast_expression "(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669)" (( "(") (binary_expression "*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669" (binary_expression "*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4)" (* "*") (cast_expression "(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x57dd + (uint)bVar37 * 4)" (( "(") (binary_expression "unaff_EDI + 0x57dd + (uint)bVar37 * 4" (binary_expression "unaff_EDI + 0x57dd" (identifier "unaff_EDI") (+ "+") (number_literal "0x57dd")) (+ "+") (binary_expression "(uint)bVar37 * 4" (cast_expression "(uint)bVar37" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar37")) (* "*") (number_literal "4"))) () ")")))) (+ "+") (identifier "unaff_EDI")) (+ "+") (number_literal "0xc669")) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar7;" (return "return") (identifier "iVar7") (; ";")) (} "}"))) (if_statement "if ((bVar37 & 8) != 0) {\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }" (if "if") (parenthesized_expression "((bVar37 & 8) != 0)" (( "(") (binary_expression "(bVar37 & 8) != 0" (parenthesized_expression "(bVar37 & 8)" (( "(") (binary_expression "bVar37 & 8" (identifier "bVar37") (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));\n        }" ({ "{") (expression_statement "__assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895));" (call_expression "__assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895))" (identifier "__assert_fail") (argument_list "((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,\n                        (char *)(unaff_EDI + 0x5895))" (( "(") (cast_expression "(char *)(unaff_EDI + 0x5ac9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x5ac9)" (( "(") (binary_expression "unaff_EDI + 0x5ac9" (identifier "unaff_EDI") (+ "+") (number_literal "0x5ac9")) () ")"))) (, ",") (cast_expression "(char *)(unaff_EDI + 0x503d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x503d)" (( "(") (binary_expression "unaff_EDI + 0x503d" (identifier "unaff_EDI") (+ "+") (number_literal "0x503d")) () ")"))) (, ",") (number_literal "0x5cc") (, ",") (cast_expression "(char *)(unaff_EDI + 0x5895)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x5895)" (( "(") (binary_expression "unaff_EDI + 0x5895" (identifier "unaff_EDI") (+ "+") (number_literal "0x5895")) () ")"))) () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);" (assignment_expression "*(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c)" (pointer_expression "*(undefined4 *)(local_b0[3] + puVar8[7] * 4)" (* "*") (cast_expression "(undefined4 *)(local_b0[3] + puVar8[7] * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0[3] + puVar8[7] * 4)" (( "(") (binary_expression "local_b0[3] + puVar8[7] * 4" (subscript_expression "local_b0[3]" (identifier "local_b0") ([ "[") (number_literal "3") (] "]")) (+ "+") (binary_expression "puVar8[7] * 4" (subscript_expression "puVar8[7]" (identifier "puVar8") ([ "[") (number_literal "7") (] "]")) (* "*") (number_literal "4"))) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar8[4] + 0x1c)" (* "*") (cast_expression "(undefined4 *)(puVar8[4] + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8[4] + 0x1c)" (( "(") (binary_expression "puVar8[4] + 0x1c" (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "puVar16 = (undefined4 *)puVar8[1];" (assignment_expression "puVar16 = (undefined4 *)puVar8[1]" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)puVar8[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "puVar13 = puVar8;" (assignment_expression "puVar13 = puVar8" (identifier "puVar13") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "puVar8 = puVar16;" (assignment_expression "puVar8 = puVar16" (identifier "puVar8") (= "=") (identifier "puVar16")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar16 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar16 != (undefined4 *)0x0" (identifier "puVar16") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";"))) (} "}"))) (} "}"))) (expression_statement "bVar36 = false;" (assignment_expression "bVar36 = false" (identifier "bVar36") (= "=") (false "false")) (; ";")) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    if (local_b0[2] == iVar19) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    if (local_b0[2] == iVar19) goto LAB_000284fa;\nLAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }\n  }" ({ "{") (if_statement "if (local_b0[2] == iVar19) goto LAB_000284fa;" (if "if") (parenthesized_expression "(local_b0[2] == iVar19)" (( "(") (binary_expression "local_b0[2] == iVar19" (subscript_expression "local_b0[2]" (identifier "local_b0") ([ "[") (number_literal "2") (] "]")) (== "==") (identifier "iVar19")) () ")")) (goto_statement "goto LAB_000284fa;" (goto "goto") (statement_identifier "LAB_000284fa") (; ";"))) (labeled_statement "LAB_000284dd:\n    while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }" (statement_identifier "LAB_000284dd") (: ":") (while_statement "while( true ) {\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      iVar20 = iVar19 * 0xc;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;\n      iVar7 = FUN_0001fb10(1);\n      if (iVar7 != 0) goto LAB_00028335;\n      iVar19 = iVar19 + 1;\n      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;\n      free(local_78);\n      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;\n      if (local_b0[2] == iVar19) goto LAB_00028505;\n    }" ({ "{") (expression_statement "iVar20 = iVar19 * 0xc;" (assignment_expression "iVar20 = iVar19 * 0xc" (identifier "iVar20") (= "=") (binary_expression "iVar19 * 0xc" (identifier "iVar19") (* "*") (number_literal "0xc"))) (; ";")) (if_statement "if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;" (if "if") (parenthesized_expression "(*(int *)(local_b0[6] + 4 + iVar20) != 0)" (( "(") (binary_expression "*(int *)(local_b0[6] + 4 + iVar20) != 0" (pointer_expression "*(int *)(local_b0[6] + 4 + iVar20)" (* "*") (cast_expression "(int *)(local_b0[6] + 4 + iVar20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0[6] + 4 + iVar20)" (( "(") (binary_expression "local_b0[6] + 4 + iVar20" (binary_expression "local_b0[6] + 4" (subscript_expression "local_b0[6]" (identifier "local_b0") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "4")) (+ "+") (identifier "iVar20")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto code_r0x000284f2;" (goto "goto") (statement_identifier "code_r0x000284f2") (; ";"))) (expression_statement "iVar7 = FUN_0001fb10(1);" (assignment_expression "iVar7 = FUN_0001fb10(1)" (identifier "iVar7") (= "=") (call_expression "FUN_0001fb10(1)" (identifier "FUN_0001fb10") (argument_list "(1)" (( "(") (number_literal "1") () ")")))) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_00028335;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00028335;" (goto "goto") (statement_identifier "LAB_00028335") (; ";"))) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" (identifier "iVar19") (= "=") (binary_expression "iVar19 + 1" (identifier "iVar19") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;" (if "if") (parenthesized_expression "(*(int *)(local_b0[6] + 4 + iVar20) != 0)" (( "(") (binary_expression "*(int *)(local_b0[6] + 4 + iVar20) != 0" (pointer_expression "*(int *)(local_b0[6] + 4 + iVar20)" (* "*") (cast_expression "(int *)(local_b0[6] + 4 + iVar20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0[6] + 4 + iVar20)" (( "(") (binary_expression "local_b0[6] + 4 + iVar20" (binary_expression "local_b0[6] + 4" (subscript_expression "local_b0[6]" (identifier "local_b0") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "4")) (+ "+") (identifier "iVar20")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "free(local_78);" (call_expression "free(local_78)" (identifier "free") (argument_list "(local_78)" (( "(") (identifier "local_78") () ")"))) (; ";")) (expression_statement "bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;" (assignment_expression "bVar36 = bVar35 || puVar8 == (undefined4 *)0x0" (identifier "bVar36") (= "=") (binary_expression "bVar35 || puVar8 == (undefined4 *)0x0" (identifier "bVar35") (|| "||") (binary_expression "puVar8 == (undefined4 *)0x0" (identifier "puVar8") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))))) (; ";")) (if_statement "if (local_b0[2] == iVar19) goto LAB_00028505;" (if "if") (parenthesized_expression "(local_b0[2] == iVar19)" (( "(") (binary_expression "local_b0[2] == iVar19" (subscript_expression "local_b0[2]" (identifier "local_b0") ([ "[") (number_literal "2") (] "]")) (== "==") (identifier "iVar19")) () ")")) (goto_statement "goto LAB_00028505;" (goto "goto") (statement_identifier "LAB_00028505") (; ";"))) (} "}")))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (labeled_statement "code_r0x000284f2:\n  iVar19 = iVar19 + 1;" (statement_identifier "code_r0x000284f2") (: ":") (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" (identifier "iVar19") (= "=") (binary_expression "iVar19 + 1" (identifier "iVar19") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if (local_b0[2] == iVar19) {\nLAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    iVar19 = 0;\n    bVar36 = false;\n  }" (if "if") (parenthesized_expression "(local_b0[2] == iVar19)" (( "(") (binary_expression "local_b0[2] == iVar19" (subscript_expression "local_b0[2]" (identifier "local_b0") ([ "[") (number_literal "2") (] "]")) (== "==") (identifier "iVar19")) () ")")) (compound_statement "{\nLAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }\nLAB_00028505:\n    iVar19 = 0;\n    bVar36 = false;\n  }" ({ "{") (labeled_statement "LAB_000284fa:\n    if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }" (statement_identifier "LAB_000284fa") (: ":") (if_statement "if (!bVar36) {\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }" (if "if") (parenthesized_expression "(!bVar36)" (( "(") (unary_expression "!bVar36" (! "!") (identifier "bVar36")) () ")")) (compound_statement "{\n      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;\n      pvVar9 = malloc(iVar19 * 0xc);\n      local_b0[7] = (int)pvVar9;\n      if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }\n      local_88 = 0xc;\n      local_b0 = (int *)*piVar3;\n      goto LAB_00027c60;\n    }" ({ "{") (if_statement "if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;" (if "if") (parenthesized_expression "(((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0))" (( "(") (binary_expression "((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)" (parenthesized_expression "((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0))" (( "(") (binary_expression "(((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||\n          ((*(byte *)(local_b0 + 0x16) & 1) == 0)" (parenthesized_expression "(((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0))" (( "(") (binary_expression "((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)" (parenthesized_expression "((*(byte *)(piVar3 + 7) & 0x10) != 0)" (( "(") (binary_expression "(*(byte *)(piVar3 + 7) & 0x10) != 0" (parenthesized_expression "(*(byte *)(piVar3 + 7) & 0x10)" (( "(") (binary_expression "*(byte *)(piVar3 + 7) & 0x10" (pointer_expression "*(byte *)(piVar3 + 7)" (* "*") (cast_expression "(byte *)(piVar3 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 7)" (( "(") (binary_expression "piVar3 + 7" (identifier "piVar3") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(piVar3[6] == 0)" (( "(") (binary_expression "piVar3[6] == 0" (subscript_expression "piVar3[6]" (identifier "piVar3") ([ "[") (number_literal "6") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(local_b0 + 0x16) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(local_b0 + 0x16) & 1) == 0" (parenthesized_expression "(*(byte *)(local_b0 + 0x16) & 1)" (( "(") (binary_expression "*(byte *)(local_b0 + 0x16) & 1" (pointer_expression "*(byte *)(local_b0 + 0x16)" (* "*") (cast_expression "(byte *)(local_b0 + 0x16)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0 + 0x16)" (( "(") (binary_expression "local_b0 + 0x16" (identifier "local_b0") (+ "+") (number_literal "0x16")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(local_b0[0x13] == 0)" (( "(") (binary_expression "local_b0[0x13] == 0" (subscript_expression "local_b0[0x13]" (identifier "local_b0") ([ "[") (number_literal "0x13") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00028860;" (goto "goto") (statement_identifier "LAB_00028860") (; ";"))) (expression_statement "pvVar9 = malloc(iVar19 * 0xc);" (assignment_expression "pvVar9 = malloc(iVar19 * 0xc)" (identifier "pvVar9") (= "=") (call_expression "malloc(iVar19 * 0xc)" (identifier "malloc") (argument_list "(iVar19 * 0xc)" (( "(") (binary_expression "iVar19 * 0xc" (identifier "iVar19") (* "*") (number_literal "0xc")) () ")")))) (; ";")) (expression_statement "local_b0[7] = (int)pvVar9;" (assignment_expression "local_b0[7] = (int)pvVar9" (subscript_expression "local_b0[7]" (identifier "local_b0") ([ "[") (number_literal "7") (] "]")) (= "=") (cast_expression "(int)pvVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar9"))) (; ";")) (if_statement "if (pvVar9 != (void *)0x0) {\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }" (if "if") (parenthesized_expression "(pvVar9 != (void *)0x0)" (( "(") (binary_expression "pvVar9 != (void *)0x0" (identifier "pvVar9") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        uVar31 = 0;\n        if (iVar19 != 0) goto LAB_0002875b;\n        goto LAB_00028860;\n      }" ({ "{") (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" (identifier "uVar31") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar19 != 0) goto LAB_0002875b;" (if "if") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002875b;" (goto "goto") (statement_identifier "LAB_0002875b") (; ";"))) (goto_statement "goto LAB_00028860;" (goto "goto") (statement_identifier "LAB_00028860") (; ";")) (} "}"))) (expression_statement "local_88 = 0xc;" (assignment_expression "local_88 = 0xc" (identifier "local_88") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" (identifier "local_b0") (= "=") (cast_expression "(int *)*piVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar3" (* "*") (identifier "piVar3")))) (; ";")) (goto_statement "goto LAB_00027c60;" (goto "goto") (statement_identifier "LAB_00027c60") (; ";")) (} "}")))) (labeled_statement "LAB_00028505:\n    iVar19 = 0;" (statement_identifier "LAB_00028505") (: ":") (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";"))) (expression_statement "bVar36 = false;" (assignment_expression "bVar36 = false" (identifier "bVar36") (= "=") (false "false")) (; ";")) (} "}"))) (goto_statement "goto LAB_000284dd;" (goto "goto") (statement_identifier "LAB_000284dd") (; ";")) (labeled_statement "LAB_00028330:\n  iVar7 = 0xc;" (statement_identifier "LAB_00028330") (: ":") (expression_statement "iVar7 = 0xc;" (assignment_expression "iVar7 = 0xc" (identifier "iVar7") (= "=") (number_literal "0xc")) (; ";"))) (labeled_statement "LAB_00028335:\n  local_b0 = (int *)*piVar3;" (statement_identifier "LAB_00028335") (: ":") (expression_statement "local_b0 = (int *)*piVar3;" (assignment_expression "local_b0 = (int *)*piVar3" (identifier "local_b0") (= "=") (cast_expression "(int *)*piVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar3" (* "*") (identifier "piVar3")))) (; ";"))) (expression_statement "local_88 = iVar7;" (assignment_expression "local_88 = iVar7" (identifier "local_88") (= "=") (identifier "iVar7")) (; ";")) (labeled_statement "LAB_00027c60:\n  puVar8 = (undefined4 *)local_b0[0xe];" (statement_identifier "LAB_00027c60") (: ":") (expression_statement "puVar8 = (undefined4 *)local_b0[0xe];" (assignment_expression "puVar8 = (undefined4 *)local_b0[0xe]" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)local_b0[0xe]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_b0[0xe]" (identifier "local_b0") ([ "[") (number_literal "0xe") (] "]")))) (; ";"))) (while_statement "while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }" (while "while") (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar8 != (undefined4 *)0x0" (identifier "puVar8") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }" ({ "{") (expression_statement "puVar16 = (undefined4 *)*puVar8;" (assignment_expression "puVar16 = (undefined4 *)*puVar8" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)*puVar8" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")))) (; ";")) (expression_statement "free(puVar8);" (call_expression "free(puVar8)" (identifier "free") (argument_list "(puVar8)" (( "(") (identifier "puVar8") () ")"))) (; ";")) (expression_statement "puVar8 = puVar16;" (assignment_expression "puVar8 = puVar16" (identifier "puVar8") (= "=") (identifier "puVar16")) (; ";")) (} "}"))) (expression_statement "local_b0[0xe] = 0;" (assignment_expression "local_b0[0xe] = 0" (subscript_expression "local_b0[0xe]" (identifier "local_b0") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_b0[0x10] = 0x1f;" (assignment_expression "local_b0[0x10] = 0x1f" (subscript_expression "local_b0[0x10]" (identifier "local_b0") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "0x1f")) (; ";")) (expression_statement "local_b0[0xd] = 0;" (assignment_expression "local_b0[0xd] = 0" (subscript_expression "local_b0[0xd]" (identifier "local_b0") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "free((void *)local_b0[4]);" (call_expression "free((void *)local_b0[4])" (identifier "free") (argument_list "((void *)local_b0[4])" (( "(") (cast_expression "(void *)local_b0[4]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_b0[4]" (identifier "local_b0") ([ "[") (number_literal "4") (] "]"))) () ")"))) (; ";")) (expression_statement "local_b0[4] = 0;" (assignment_expression "local_b0[4] = 0" (subscript_expression "local_b0[4]" (identifier "local_b0") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "free(local_6c);" (call_expression "free(local_6c)" (identifier "free") (argument_list "(local_6c)" (( "(") (identifier "local_6c") () ")"))) (; ";")) (expression_statement "free(local_68);" (call_expression "free(local_68)" (identifier "free") (argument_list "(local_68)" (( "(") (identifier "local_68") () ")"))) (; ";")) (if_statement "if (local_29 != '\0') {\n    free(local_70);\n  }" (if "if") (parenthesized_expression "(local_29 != '\0')" (( "(") (binary_expression "local_29 != '\0'" (identifier "local_29") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    free(local_70);\n  }" ({ "{") (expression_statement "free(local_70);" (call_expression "free(local_70)" (identifier "free") (argument_list "(local_70)" (( "(") (identifier "local_70") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_000282d8;" (goto "goto") (statement_identifier "LAB_000282d8") (; ";")) (labeled_statement "LAB_0002897d:\n  do {\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  } while (uVar18 < uVar31);" (statement_identifier "LAB_0002897d") (: ":") (do_statement "do {\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  } while (uVar18 < uVar31);" (do "do") (compound_statement "{\n    uVar23 = uVar31 + uVar18 >> 1;\n    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }\n    uVar18 = uVar23 + 1;\n  }" ({ "{") (expression_statement "uVar23 = uVar31 + uVar18 >> 1;" (assignment_expression "uVar23 = uVar31 + uVar18 >> 1" (identifier "uVar23") (= "=") (binary_expression "uVar31 + uVar18 >> 1" (binary_expression "uVar31 + uVar18" (identifier "uVar31") (+ "+") (identifier "uVar18")) (>> ">>") (number_literal "1"))) (; ";")) (if_statement "if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }" (if "if") (parenthesized_expression "(iVar19 <= *(int *)((int)local_78 + uVar23 * 4))" (( "(") (binary_expression "iVar19 <= *(int *)((int)local_78 + uVar23 * 4)" (identifier "iVar19") (<= "<=") (pointer_expression "*(int *)((int)local_78 + uVar23 * 4)" (* "*") (cast_expression "(int *)((int)local_78 + uVar23 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_78 + uVar23 * 4)" (( "(") (binary_expression "(int)local_78 + uVar23 * 4" (cast_expression "(int)local_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_78")) (+ "+") (binary_expression "uVar23 * 4" (identifier "uVar23") (* "*") (number_literal "4"))) () ")"))))) () ")")) (compound_statement "{\n      if (uVar23 <= uVar18) break;\n      uVar32 = uVar18 + uVar23 >> 1;\n      iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      uVar31 = uVar23;\n      uVar23 = uVar32;\n      while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }\n    }" ({ "{") (if_statement "if (uVar23 <= uVar18) break;" (if "if") (parenthesized_expression "(uVar23 <= uVar18)" (( "(") (binary_expression "uVar23 <= uVar18" (identifier "uVar23") (<= "<=") (identifier "uVar18")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar32 = uVar18 + uVar23 >> 1;" (assignment_expression "uVar32 = uVar18 + uVar23 >> 1" (identifier "uVar32") (= "=") (binary_expression "uVar18 + uVar23 >> 1" (binary_expression "uVar18 + uVar23" (identifier "uVar18") (+ "+") (identifier "uVar23")) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "iVar20 = *(int *)((int)local_78 + uVar32 * 4);" (assignment_expression "iVar20 = *(int *)((int)local_78 + uVar32 * 4)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)((int)local_78 + uVar32 * 4)" (* "*") (cast_expression "(int *)((int)local_78 + uVar32 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_78 + uVar32 * 4)" (( "(") (binary_expression "(int)local_78 + uVar32 * 4" (cast_expression "(int)local_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_78")) (+ "+") (binary_expression "uVar32 * 4" (identifier "uVar32") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar31 = uVar23;" (assignment_expression "uVar31 = uVar23" (identifier "uVar31") (= "=") (identifier "uVar23")) (; ";")) (expression_statement "uVar23 = uVar32;" (assignment_expression "uVar23 = uVar32" (identifier "uVar23") (= "=") (identifier "uVar32")) (; ";")) (while_statement "while (iVar19 <= iVar20) {\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }" (while "while") (parenthesized_expression "(iVar19 <= iVar20)" (( "(") (binary_expression "iVar19 <= iVar20" (identifier "iVar19") (<= "<=") (identifier "iVar20")) () ")")) (compound_statement "{\n        if (uVar23 <= uVar18) goto LAB_000289b4;\n        uVar32 = uVar18 + uVar23 >> 1;\n        uVar31 = uVar23;\n        uVar23 = uVar32;\n        iVar20 = *(int *)((int)local_78 + uVar32 * 4);\n      }" ({ "{") (if_statement "if (uVar23 <= uVar18) goto LAB_000289b4;" (if "if") (parenthesized_expression "(uVar23 <= uVar18)" (( "(") (binary_expression "uVar23 <= uVar18" (identifier "uVar23") (<= "<=") (identifier "uVar18")) () ")")) (goto_statement "goto LAB_000289b4;" (goto "goto") (statement_identifier "LAB_000289b4") (; ";"))) (expression_statement "uVar32 = uVar18 + uVar23 >> 1;" (assignment_expression "uVar32 = uVar18 + uVar23 >> 1" (identifier "uVar32") (= "=") (binary_expression "uVar18 + uVar23 >> 1" (binary_expression "uVar18 + uVar23" (identifier "uVar18") (+ "+") (identifier "uVar23")) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "uVar31 = uVar23;" (assignment_expression "uVar31 = uVar23" (identifier "uVar31") (= "=") (identifier "uVar23")) (; ";")) (expression_statement "uVar23 = uVar32;" (assignment_expression "uVar23 = uVar32" (identifier "uVar23") (= "=") (identifier "uVar32")) (; ";")) (expression_statement "iVar20 = *(int *)((int)local_78 + uVar32 * 4);" (assignment_expression "iVar20 = *(int *)((int)local_78 + uVar32 * 4)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)((int)local_78 + uVar32 * 4)" (* "*") (cast_expression "(int *)((int)local_78 + uVar32 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_78 + uVar32 * 4)" (( "(") (binary_expression "(int)local_78 + uVar32 * 4" (cast_expression "(int)local_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_78")) (+ "+") (binary_expression "uVar32 * 4" (identifier "uVar32") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar18 = uVar23 + 1;" (assignment_expression "uVar18 = uVar23 + 1" (identifier "uVar18") (= "=") (binary_expression "uVar23 + 1" (identifier "uVar23") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar18 < uVar31)" (( "(") (binary_expression "uVar18 < uVar31" (identifier "uVar18") (< "<") (identifier "uVar31")) () ")")) (; ";"))) (labeled_statement "LAB_000289b4:\n  if (*(int *)((int)local_78 + uVar18 * 4) == iVar19) {\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }" (statement_identifier "LAB_000289b4") (: ":") (if_statement "if (*(int *)((int)local_78 + uVar18 * 4) == iVar19) {\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }" (if "if") (parenthesized_expression "(*(int *)((int)local_78 + uVar18 * 4) == iVar19)" (( "(") (binary_expression "*(int *)((int)local_78 + uVar18 * 4) == iVar19" (pointer_expression "*(int *)((int)local_78 + uVar18 * 4)" (* "*") (cast_expression "(int *)((int)local_78 + uVar18 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_78 + uVar18 * 4)" (( "(") (binary_expression "(int)local_78 + uVar18 * 4" (cast_expression "(int)local_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_78")) (+ "+") (binary_expression "uVar18 * 4" (identifier "uVar18") (* "*") (number_literal "4"))) () ")")))) (== "==") (identifier "iVar19")) () ")")) (compound_statement "{\nLAB_00028908:\n    iVar7 = iVar7 + 1;\n    iVar19 = local_7c;\n    if (local_7c <= iVar7) goto LAB_000289f2;\n    goto LAB_00028917;\n  }" ({ "{") (labeled_statement "LAB_00028908:\n    iVar7 = iVar7 + 1;" (statement_identifier "LAB_00028908") (: ":") (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "iVar19 = local_7c;" (assignment_expression "iVar19 = local_7c" (identifier "iVar19") (= "=") (identifier "local_7c")) (; ";")) (if_statement "if (local_7c <= iVar7) goto LAB_000289f2;" (if "if") (parenthesized_expression "(local_7c <= iVar7)" (( "(") (binary_expression "local_7c <= iVar7" (identifier "local_7c") (<= "<=") (identifier "iVar7")) () ")")) (goto_statement "goto LAB_000289f2;" (goto "goto") (statement_identifier "LAB_000289f2") (; ";"))) (goto_statement "goto LAB_00028917;" (goto "goto") (statement_identifier "LAB_00028917") (; ";")) (} "}")))) (expression_statement "iVar7 = FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc);" (assignment_expression "iVar7 = FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc)" (identifier "iVar7") (= "=") (call_expression "FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc)" (identifier "FUN_00018fe0") (argument_list "(&local_80,__ptr[6] + iVar19 * 0xc)" (( "(") (pointer_expression "&local_80" (& "&") (identifier "local_80")) (, ",") (binary_expression "__ptr[6] + iVar19 * 0xc" (subscript_expression "__ptr[6]" (identifier "__ptr") ([ "[") (number_literal "6") (] "]")) (+ "+") (binary_expression "iVar19 * 0xc" (identifier "iVar19") (* "*") (number_literal "0xc"))) () ")")))) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_00028a39;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00028a39;" (goto "goto") (statement_identifier "LAB_00028a39") (; ";"))) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" (identifier "iVar7") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar19 = local_7c;" (assignment_expression "iVar19 = local_7c" (identifier "iVar19") (= "=") (identifier "local_7c")) (; ";")) (if_statement "if (local_7c < 2) goto LAB_000289f2;" (if "if") (parenthesized_expression "(local_7c < 2)" (( "(") (binary_expression "local_7c < 2" (identifier "local_7c") (< "<") (number_literal "2")) () ")")) (goto_statement "goto LAB_000289f2;" (goto "goto") (statement_identifier "LAB_000289f2") (; ";"))) (goto_statement "goto LAB_00028917;" (goto "goto") (statement_identifier "LAB_00028917") (; ";")) (labeled_statement "LAB_0002875b:\n  while( true ) {\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }" (statement_identifier "LAB_0002875b") (: ":") (while_statement "while( true ) {\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);\n    *puVar8 = 0;\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    uVar23 = local_b0[2];\n    if (uVar23 <= uVar31 + 1) break;\n    pvVar9 = (void *)local_b0[7];\n    uVar31 = uVar31 + 1;\n  }" ({ "{") (expression_statement "puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);" (assignment_expression "puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc)" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)((int)pvVar9 + uVar31 * 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar9 + uVar31 * 0xc)" (( "(") (binary_expression "(int)pvVar9 + uVar31 * 0xc" (cast_expression "(int)pvVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar9")) (+ "+") (binary_expression "uVar31 * 0xc" (identifier "uVar31") (* "*") (number_literal "0xc"))) () ")")))) (; ";")) (expression_statement "*puVar8 = 0;" (assignment_expression "*puVar8 = 0" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[1] = 0;" (assignment_expression "puVar8[1] = 0" (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[2] = 0;" (assignment_expression "puVar8[2] = 0" (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar23 = local_b0[2];" (assignment_expression "uVar23 = local_b0[2]" (identifier "uVar23") (= "=") (subscript_expression "local_b0[2]" (identifier "local_b0") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (uVar23 <= uVar31 + 1) break;" (if "if") (parenthesized_expression "(uVar23 <= uVar31 + 1)" (( "(") (binary_expression "uVar23 <= uVar31 + 1" (identifier "uVar23") (<= "<=") (binary_expression "uVar31 + 1" (identifier "uVar31") (+ "+") (number_literal "1"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pvVar9 = (void *)local_b0[7];" (assignment_expression "pvVar9 = (void *)local_b0[7]" (identifier "pvVar9") (= "=") (cast_expression "(void *)local_b0[7]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_b0[7]" (identifier "local_b0") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "uVar31 = uVar31 + 1;" (assignment_expression "uVar31 = uVar31 + 1" (identifier "uVar31") (= "=") (binary_expression "uVar31 + 1" (identifier "uVar31") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (if_statement "if (uVar23 != 0) {\n    local_9c = 0;\n    local_b0 = (int *)local_b0[6];\n    do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);\n  }" (if "if") (parenthesized_expression "(uVar23 != 0)" (( "(") (binary_expression "uVar23 != 0" (identifier "uVar23") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_9c = 0;\n    local_b0 = (int *)local_b0[6];\n    do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);\n  }" ({ "{") (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" (identifier "local_9c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_b0 = (int *)local_b0[6];" (assignment_expression "local_b0 = (int *)local_b0[6]" (identifier "local_b0") (= "=") (cast_expression "(int *)local_b0[6]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_b0[6]" (identifier "local_b0") ([ "[") (number_literal "6") (] "]")))) (; ";")) (do_statement "do {\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    } while (local_9c < uVar23);" (do "do") (compound_statement "{\n      iVar19 = (int)local_b0 + local_9c * 0xc;\n      iVar7 = *(int *)(iVar19 + 8);\n      if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }\n      local_9c = local_9c + 1;\n    }" ({ "{") (expression_statement "iVar19 = (int)local_b0 + local_9c * 0xc;" (assignment_expression "iVar19 = (int)local_b0 + local_9c * 0xc" (identifier "iVar19") (= "=") (binary_expression "(int)local_b0 + local_9c * 0xc" (cast_expression "(int)local_b0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b0")) (+ "+") (binary_expression "local_9c * 0xc" (identifier "local_9c") (* "*") (number_literal "0xc")))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar19 + 8);" (assignment_expression "iVar7 = *(int *)(iVar19 + 8)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar19 + 8)" (* "*") (cast_expression "(int *)(iVar19 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 8)" (( "(") (binary_expression "iVar19 + 8" (identifier "iVar19") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (0 < *(int *)(iVar19 + 4)) {\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }" (if "if") (parenthesized_expression "(0 < *(int *)(iVar19 + 4))" (( "(") (binary_expression "0 < *(int *)(iVar19 + 4)" (number_literal "0") (< "<") (pointer_expression "*(int *)(iVar19 + 4)" (* "*") (cast_expression "(int *)(iVar19 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 4)" (( "(") (binary_expression "iVar19 + 4" (identifier "iVar19") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n        iVar19 = 0;\n        do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));\n        uVar23 = piVar28[2];\n      }" ({ "{") (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));" (do "do") (compound_statement "{\n          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);\n          iVar20 = piVar21[1];\n          pvVar9 = (void *)piVar21[2];\n          if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }\n          iVar19 = iVar19 + 1;\n          piVar21[1] = iVar20 + 1;\n          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;\n        }" ({ "{") (expression_statement "piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);" (assignment_expression "piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc)" (identifier "piVar21") (= "=") (cast_expression "(int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc)" (( "(") (binary_expression "piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc" (subscript_expression "piVar28[7]" (identifier "piVar28") ([ "[") (number_literal "7") (] "]")) (+ "+") (binary_expression "*(int *)(iVar7 + iVar19 * 4) * 0xc" (pointer_expression "*(int *)(iVar7 + iVar19 * 4)" (* "*") (cast_expression "(int *)(iVar7 + iVar19 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + iVar19 * 4)" (( "(") (binary_expression "iVar7 + iVar19 * 4" (identifier "iVar7") (+ "+") (binary_expression "iVar19 * 4" (identifier "iVar19") (* "*") (number_literal "4"))) () ")")))) (* "*") (number_literal "0xc"))) () ")")))) (; ";")) (expression_statement "iVar20 = piVar21[1];" (assignment_expression "iVar20 = piVar21[1]" (identifier "iVar20") (= "=") (subscript_expression "piVar21[1]" (identifier "piVar21") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pvVar9 = (void *)piVar21[2];" (assignment_expression "pvVar9 = (void *)piVar21[2]" (identifier "pvVar9") (= "=") (cast_expression "(void *)piVar21[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar21[2]" (identifier "piVar21") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (*piVar21 == iVar20) {\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }" (if "if") (parenthesized_expression "(*piVar21 == iVar20)" (( "(") (binary_expression "*piVar21 == iVar20" (pointer_expression "*piVar21" (* "*") (identifier "piVar21")) (== "==") (identifier "iVar20")) () ")")) (compound_statement "{\n            *piVar21 = (iVar20 + 1) * 2;\n            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);\n            if (pvVar9 == (void *)0x0) goto LAB_00028330;\n            local_b0 = (int *)piVar28[6];\n            iVar20 = piVar21[1];\n            piVar21[2] = (int)pvVar9;\n          }" ({ "{") (expression_statement "*piVar21 = (iVar20 + 1) * 2;" (assignment_expression "*piVar21 = (iVar20 + 1) * 2" (pointer_expression "*piVar21" (* "*") (identifier "piVar21")) (= "=") (binary_expression "(iVar20 + 1) * 2" (parenthesized_expression "(iVar20 + 1)" (( "(") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "2"))) (; ";")) (expression_statement "pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);" (assignment_expression "pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8)" (identifier "pvVar9") (= "=") (call_expression "realloc(pvVar9,(iVar20 + 1) * 8)" (identifier "realloc") (argument_list "(pvVar9,(iVar20 + 1) * 8)" (( "(") (identifier "pvVar9") (, ",") (binary_expression "(iVar20 + 1) * 8" (parenthesized_expression "(iVar20 + 1)" (( "(") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (pvVar9 == (void *)0x0) goto LAB_00028330;" (if "if") (parenthesized_expression "(pvVar9 == (void *)0x0)" (( "(") (binary_expression "pvVar9 == (void *)0x0" (identifier "pvVar9") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00028330;" (goto "goto") (statement_identifier "LAB_00028330") (; ";"))) (expression_statement "local_b0 = (int *)piVar28[6];" (assignment_expression "local_b0 = (int *)piVar28[6]" (identifier "local_b0") (= "=") (cast_expression "(int *)piVar28[6]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar28[6]" (identifier "piVar28") ([ "[") (number_literal "6") (] "]")))) (; ";")) (expression_statement "iVar20 = piVar21[1];" (assignment_expression "iVar20 = piVar21[1]" (identifier "iVar20") (= "=") (subscript_expression "piVar21[1]" (identifier "piVar21") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar21[2] = (int)pvVar9;" (assignment_expression "piVar21[2] = (int)pvVar9" (subscript_expression "piVar21[2]" (identifier "piVar21") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)pvVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar9"))) (; ";")) (} "}"))) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" (identifier "iVar19") (= "=") (binary_expression "iVar19 + 1" (identifier "iVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar21[1] = iVar20 + 1;" (assignment_expression "piVar21[1] = iVar20 + 1" (subscript_expression "piVar21[1]" (identifier "piVar21") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar20 + 1" (identifier "iVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;" (assignment_expression "*(uint *)((int)pvVar9 + iVar20 * 4) = local_9c" (pointer_expression "*(uint *)((int)pvVar9 + iVar20 * 4)" (* "*") (cast_expression "(uint *)((int)pvVar9 + iVar20 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar9 + iVar20 * 4)" (( "(") (binary_expression "(int)pvVar9 + iVar20 * 4" (cast_expression "(int)pvVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar9")) (+ "+") (binary_expression "iVar20 * 4" (identifier "iVar20") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "local_9c")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc))" (( "(") (binary_expression "iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc)" (identifier "iVar19") (< "<") (pointer_expression "*(int *)((int)local_b0 + 4 + local_9c * 0xc)" (* "*") (cast_expression "(int *)((int)local_b0 + 4 + local_9c * 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_b0 + 4 + local_9c * 0xc)" (( "(") (binary_expression "(int)local_b0 + 4 + local_9c * 0xc" (binary_expression "(int)local_b0 + 4" (cast_expression "(int)local_b0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b0")) (+ "+") (number_literal "4")) (+ "+") (binary_expression "local_9c * 0xc" (identifier "local_9c") (* "*") (number_literal "0xc"))) () ")"))))) () ")")) (; ";")) (expression_statement "uVar23 = piVar28[2];" (assignment_expression "uVar23 = piVar28[2]" (identifier "uVar23") (= "=") (subscript_expression "piVar28[2]" (identifier "piVar28") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (expression_statement "local_9c = local_9c + 1;" (assignment_expression "local_9c = local_9c + 1" (identifier "local_9c") (= "=") (binary_expression "local_9c + 1" (identifier "local_9c") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_9c < uVar23)" (( "(") (binary_expression "local_9c < uVar23" (identifier "local_9c") (< "<") (identifier "uVar23")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00028860:\n  local_88 = 0;" (statement_identifier "LAB_00028860") (: ":") (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" (identifier "local_88") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0)) {\n    if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    \n        abort();\n      }\n                    \n                    \n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }\n    __ptr[0x17] = 1;\n    *(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;\n  }" (if "if") (parenthesized_expression "(((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0))" (( "(") (binary_expression "((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0)" (parenthesized_expression "((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0)" (( "(") (binary_expression "(*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0" (parenthesized_expression "(*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0)" (( "(") (binary_expression "*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0" (binary_expression "*(byte *)(__ptr + 0x16) >> 2" (pointer_expression "*(byte *)(__ptr + 0x16)" (* "*") (cast_expression "(byte *)(__ptr + 0x16)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr + 0x16)" (( "(") (binary_expression "__ptr + 0x16" (identifier "__ptr") (+ "+") (number_literal "0x16")) () ")")))) (>> ">>") (number_literal "2")) (& "&") (binary_expression "uVar18 == 0" (identifier "uVar18") (== "==") (number_literal "0"))) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(piVar3[5] == 0)" (( "(") (binary_expression "piVar3[5] == 0" (subscript_expression "piVar3[5]" (identifier "piVar3") ([ "[") (number_literal "5") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    \n        abort();\n      }\n                    \n                    \n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }\n    __ptr[0x17] = 1;\n    *(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;\n  }" ({ "{") (if_statement "if (__ptr[2] != 0) {\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    \n        abort();\n      }\n                    \n                    \n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }" (if "if") (parenthesized_expression "(__ptr[2] != 0)" (( "(") (binary_expression "__ptr[2] != 0" (subscript_expression "__ptr[2]" (identifier "__ptr") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (0xc < *(byte *)(*__ptr + 4)) {\n                    \n        abort();\n      }\n                    \n                    \n      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();\n      return iVar7;\n    }" ({ "{") (if_statement "if (0xc < *(byte *)(*__ptr + 4)) {\n                    \n        abort();\n      }" (if "if") (parenthesized_expression "(0xc < *(byte *)(*__ptr + 4))" (( "(") (binary_expression "0xc < *(byte *)(*__ptr + 4)" (number_literal "0xc") (< "<") (pointer_expression "*(byte *)(*__ptr + 4)" (* "*") (cast_expression "(byte *)(*__ptr + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*__ptr + 4)" (( "(") (binary_expression "*__ptr + 4" (pointer_expression "*__ptr" (* "*") (identifier "__ptr")) (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n                    \n        abort();\n      }" ({ "{") (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))();" (assignment_expression "iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))()" (identifier "iVar7") (= "=") (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669))" (( "(") (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669)" (* "*") (cast_expression "(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669)" (( "(") (binary_expression "*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI + 0xc669" (binary_expression "*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +\n                        unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4)" (* "*") (cast_expression "(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4)" (( "(") (binary_expression "unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4" (binary_expression "unaff_EDI + 0x5821" (identifier "unaff_EDI") (+ "+") (number_literal "0x5821")) (+ "+") (binary_expression "(uint)*(byte *)(*__ptr + 4) * 4" (binary_expression "(uint)*(byte *)(*__ptr + 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(*__ptr + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*__ptr + 4)" (( "(") (binary_expression "*__ptr + 4" (pointer_expression "*__ptr" (* "*") (identifier "__ptr")) (+ "+") (number_literal "4")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (+ "+") (identifier "unaff_EDI")) (+ "+") (number_literal "0xc669")) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar7;" (return "return") (identifier "iVar7") (; ";")) (} "}"))) (expression_statement "__ptr[0x17] = 1;" (assignment_expression "__ptr[0x17] = 1" (subscript_expression "__ptr[0x17]" (identifier "__ptr") ([ "[") (number_literal "0x17") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;" (assignment_expression "*(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9" (pointer_expression "*(byte *)(__ptr + 0x16)" (* "*") (cast_expression "(byte *)(__ptr + 0x16)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr + 0x16)" (( "(") (binary_expression "__ptr + 0x16" (identifier "__ptr") (+ "+") (number_literal "0x16")) () ")")))) (= "=") (binary_expression "(0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9" (binary_expression "(0 < __ptr[0x13]) * '\x02'" (parenthesized_expression "(0 < __ptr[0x13])" (( "(") (binary_expression "0 < __ptr[0x13]" (number_literal "0") (< "<") (subscript_expression "__ptr[0x13]" (identifier "__ptr") ([ "[") (number_literal "0x13") (] "]"))) () ")")) (* "*") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) (| "|") (binary_expression "*(byte *)(__ptr + 0x16) & 0xf9" (pointer_expression "*(byte *)(__ptr + 0x16)" (* "*") (cast_expression "(byte *)(__ptr + 0x16)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr + 0x16)" (( "(") (binary_expression "__ptr + 0x16" (identifier "__ptr") (+ "+") (number_literal "0x16")) () ")")))) (& "&") (number_literal "0xf9")))) (; ";")) (} "}"))) (expression_statement "iVar7 = *(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c);" (assignment_expression "iVar7 = *(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c)" (* "*") (cast_expression "(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(__ptr[0xd] + 0xc) + 0x1c)" (( "(") (binary_expression "*(int *)(__ptr[0xd] + 0xc) + 0x1c" (pointer_expression "*(int *)(__ptr[0xd] + 0xc)" (* "*") (cast_expression "(int *)(__ptr[0xd] + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__ptr[0xd] + 0xc)" (( "(") (binary_expression "__ptr[0xd] + 0xc" (subscript_expression "__ptr[0xd]" (identifier "__ptr") ([ "[") (number_literal "0xd") (] "]")) (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "__ptr[0x12] = iVar7;" (assignment_expression "__ptr[0x12] = iVar7" (subscript_expression "__ptr[0x12]" (identifier "__ptr") ([ "[") (number_literal "0x12") (] "]")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "iVar7 = __ptr[6] + iVar7 * 0xc;" (assignment_expression "iVar7 = __ptr[6] + iVar7 * 0xc" (identifier "iVar7") (= "=") (binary_expression "__ptr[6] + iVar7 * 0xc" (subscript_expression "__ptr[6]" (identifier "__ptr") ([ "[") (number_literal "6") (] "]")) (+ "+") (binary_expression "iVar7 * 0xc" (identifier "iVar7") (* "*") (number_literal "0xc")))) (; ";")) (expression_statement "iVar19 = *(int *)(iVar7 + 4);" (assignment_expression "iVar19 = *(int *)(iVar7 + 4)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(iVar7 + 4)" (* "*") (cast_expression "(int *)(iVar7 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 4)" (( "(") (binary_expression "iVar7 + 4" (identifier "iVar7") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (iVar19 < 1) {\n    local_80 = 0;\n    local_7c = 0;\n    local_78 = (void *)0x0;\n    local_84 = 0;\nLAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);\n    __ptr[9] = iVar19;\n    iVar7 = local_84;\n    if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }\n  }\n  else {\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }" (if "if") (parenthesized_expression "(iVar19 < 1)" (( "(") (binary_expression "iVar19 < 1" (identifier "iVar19") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    local_80 = 0;\n    local_7c = 0;\n    local_78 = (void *)0x0;\n    local_84 = 0;\nLAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);\n    __ptr[9] = iVar19;\n    iVar7 = local_84;\n    if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }\n  }" ({ "{") (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" (identifier "local_80") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" (identifier "local_7c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_78 = (void *)0x0;" (assignment_expression "local_78 = (void *)0x0" (identifier "local_78") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" (identifier "local_84") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_000289f2:\n    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);" (statement_identifier "LAB_000289f2") (: ":") (expression_statement "iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);" (assignment_expression "iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0)" (identifier "iVar19") (= "=") (call_expression "FUN_0001c950(&local_84,__ptr,&local_80,0)" (identifier "FUN_0001c950") (argument_list "(&local_84,__ptr,&local_80,0)" (( "(") (pointer_expression "&local_84" (& "&") (identifier "local_84")) (, ",") (identifier "__ptr") (, ",") (pointer_expression "&local_80" (& "&") (identifier "local_80")) (, ",") (number_literal "0") () ")")))) (; ";"))) (expression_statement "__ptr[9] = iVar19;" (assignment_expression "__ptr[9] = iVar19" (subscript_expression "__ptr[9]" (identifier "__ptr") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (expression_statement "iVar7 = local_84;" (assignment_expression "iVar7 = local_84" (identifier "iVar7") (= "=") (identifier "local_84")) (; ";")) (if_statement "if (iVar19 != 0) {\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }" (if "if") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }\n      free(local_78);\n      iVar7 = 0;\n    }" ({ "{") (if_statement "if (*(char *)(iVar19 + 0x34) < '\0') {\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }\n      else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }" (if "if") (parenthesized_expression "(*(char *)(iVar19 + 0x34) < '\0')" (( "(") (binary_expression "*(char *)(iVar19 + 0x34) < '\0'" (pointer_expression "*(char *)(iVar19 + 0x34)" (* "*") (cast_expression "(char *)(iVar19 + 0x34)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x34)" (( "(") (binary_expression "iVar19 + 0x34" (identifier "iVar19") (+ "+") (number_literal "0x34")) () ")")))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);\n        __ptr[10] = iVar7;\n        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);\n        __ptr[0xb] = iVar7;\n        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);\n        __ptr[0xc] = iVar19;\n        iVar7 = local_84;\n        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;\n      }" ({ "{") (expression_statement "iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);" (assignment_expression "iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1)" (identifier "iVar7") (= "=") (call_expression "FUN_0001c950(&local_84,__ptr,&local_80,1)" (identifier "FUN_0001c950") (argument_list "(&local_84,__ptr,&local_80,1)" (( "(") (pointer_expression "&local_84" (& "&") (identifier "local_84")) (, ",") (identifier "__ptr") (, ",") (pointer_expression "&local_80" (& "&") (identifier "local_80")) (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "__ptr[10] = iVar7;" (assignment_expression "__ptr[10] = iVar7" (subscript_expression "__ptr[10]" (identifier "__ptr") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);" (assignment_expression "iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2)" (identifier "iVar7") (= "=") (call_expression "FUN_0001c950(&local_84,__ptr,&local_80,2)" (identifier "FUN_0001c950") (argument_list "(&local_84,__ptr,&local_80,2)" (( "(") (pointer_expression "&local_84" (& "&") (identifier "local_84")) (, ",") (identifier "__ptr") (, ",") (pointer_expression "&local_80" (& "&") (identifier "local_80")) (, ",") (number_literal "2") () ")")))) (; ";")) (expression_statement "__ptr[0xb] = iVar7;" (assignment_expression "__ptr[0xb] = iVar7" (subscript_expression "__ptr[0xb]" (identifier "__ptr") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);" (assignment_expression "iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6)" (identifier "iVar19") (= "=") (call_expression "FUN_0001c950(&local_84,__ptr,&local_80,6)" (identifier "FUN_0001c950") (argument_list "(&local_84,__ptr,&local_80,6)" (( "(") (pointer_expression "&local_84" (& "&") (identifier "local_84")) (, ",") (identifier "__ptr") (, ",") (pointer_expression "&local_80" (& "&") (identifier "local_80")) (, ",") (number_literal "6") () ")")))) (; ";")) (expression_statement "__ptr[0xc] = iVar19;" (assignment_expression "__ptr[0xc] = iVar19" (subscript_expression "__ptr[0xc]" (identifier "__ptr") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (expression_statement "iVar7 = local_84;" (assignment_expression "iVar7 = local_84" (identifier "iVar7") (= "=") (identifier "local_84")) (; ";")) (if_statement "if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;" (if "if") (parenthesized_expression "(((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0))" (( "(") (binary_expression "((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)" (parenthesized_expression "((__ptr[10] == 0) || (__ptr[0xb] == 0))" (( "(") (binary_expression "(__ptr[10] == 0) || (__ptr[0xb] == 0)" (parenthesized_expression "(__ptr[10] == 0)" (( "(") (binary_expression "__ptr[10] == 0" (subscript_expression "__ptr[10]" (identifier "__ptr") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(__ptr[0xb] == 0)" (( "(") (binary_expression "__ptr[0xb] == 0" (subscript_expression "__ptr[0xb]" (identifier "__ptr") ([ "[") (number_literal "0xb") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(iVar19 == 0)" (( "(") (binary_expression "iVar19 == 0" (identifier "iVar19") (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00028a39;" (goto "goto") (statement_identifier "LAB_00028a39") (; ";"))) (} "}")) (else_clause "else {\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }" (else "else") (compound_statement "{\n        __ptr[0xc] = iVar19;\n        __ptr[0xb] = iVar19;\n        __ptr[10] = iVar19;\n      }" ({ "{") (expression_statement "__ptr[0xc] = iVar19;" (assignment_expression "__ptr[0xc] = iVar19" (subscript_expression "__ptr[0xc]" (identifier "__ptr") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (expression_statement "__ptr[0xb] = iVar19;" (assignment_expression "__ptr[0xb] = iVar19" (subscript_expression "__ptr[0xb]" (identifier "__ptr") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (expression_statement "__ptr[10] = iVar19;" (assignment_expression "__ptr[10] = iVar19" (subscript_expression "__ptr[10]" (identifier "__ptr") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "iVar19")) (; ";")) (} "}")))) (expression_statement "free(local_78);" (call_expression "free(local_78)" (identifier "free") (argument_list "(local_78)" (( "(") (identifier "local_78") () ")"))) (; ";")) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }" (else "else") (compound_statement "{\n    local_80 = iVar19;\n    local_7c = iVar19;\n    local_78 = malloc(iVar19 * 4);\n    if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }\n    iVar7 = 0xc;\n  }" ({ "{") (expression_statement "local_80 = iVar19;" (assignment_expression "local_80 = iVar19" (identifier "local_80") (= "=") (identifier "iVar19")) (; ";")) (expression_statement "local_7c = iVar19;" (assignment_expression "local_7c = iVar19" (identifier "local_7c") (= "=") (identifier "iVar19")) (; ";")) (expression_statement "local_78 = malloc(iVar19 * 4);" (assignment_expression "local_78 = malloc(iVar19 * 4)" (identifier "local_78") (= "=") (call_expression "malloc(iVar19 * 4)" (identifier "malloc") (argument_list "(iVar19 * 4)" (( "(") (binary_expression "iVar19 * 4" (identifier "iVar19") (* "*") (number_literal "4")) () ")")))) (; ";")) (if_statement "if (local_78 != (void *)0x0) {\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }" (if "if") (parenthesized_expression "(local_78 != (void *)0x0)" (( "(") (binary_expression "local_78 != (void *)0x0" (identifier "local_78") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);\n      local_84 = 0;\n      if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }\n      goto LAB_000289f2;\n    }" ({ "{") (expression_statement "memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);" (call_expression "memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4)" (identifier "memcpy") (argument_list "(local_78,*(void **)(iVar7 + 8),iVar19 * 4)" (( "(") (identifier "local_78") (, ",") (pointer_expression "*(void **)(iVar7 + 8)" (* "*") (cast_expression "(void **)(iVar7 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 8)" (( "(") (binary_expression "iVar7 + 8" (identifier "iVar7") (+ "+") (number_literal "8")) () ")")))) (, ",") (binary_expression "iVar19 * 4" (identifier "iVar19") (* "*") (number_literal "4")) () ")"))) (; ";")) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" (identifier "local_84") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < __ptr[0x13]) {\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }" (if "if") (parenthesized_expression "(0 < __ptr[0x13])" (( "(") (binary_expression "0 < __ptr[0x13]" (number_literal "0") (< "<") (subscript_expression "__ptr[0x13]" (identifier "__ptr") ([ "[") (number_literal "0x13") (] "]"))) () ")")) (compound_statement "{\n        iVar7 = 0;\nLAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);\n        piVar28 = (int *)(*__ptr + iVar20 * 8);\n        if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }\n        goto LAB_00028908;\n      }" ({ "{") (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00028917:\n        iVar20 = *(int *)((int)local_78 + iVar7 * 4);" (statement_identifier "LAB_00028917") (: ":") (expression_statement "iVar20 = *(int *)((int)local_78 + iVar7 * 4);" (assignment_expression "iVar20 = *(int *)((int)local_78 + iVar7 * 4)" (identifier "iVar20") (= "=") (pointer_expression "*(int *)((int)local_78 + iVar7 * 4)" (* "*") (cast_expression "(int *)((int)local_78 + iVar7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_78 + iVar7 * 4)" (( "(") (binary_expression "(int)local_78 + iVar7 * 4" (cast_expression "(int)local_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_78")) (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")"))))) (; ";"))) (expression_statement "piVar28 = (int *)(*__ptr + iVar20 * 8);" (assignment_expression "piVar28 = (int *)(*__ptr + iVar20 * 8)" (identifier "piVar28") (= "=") (cast_expression "(int *)(*__ptr + iVar20 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*__ptr + iVar20 * 8)" (( "(") (binary_expression "*__ptr + iVar20 * 8" (pointer_expression "*__ptr" (* "*") (identifier "__ptr")) (+ "+") (binary_expression "iVar20 * 8" (identifier "iVar20") (* "*") (number_literal "8"))) () ")")))) (; ";")) (if_statement "if ((char)piVar28[1] == '\x04') {\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }" (if "if") (parenthesized_expression "((char)piVar28[1] == '\x04')" (( "(") (binary_expression "(char)piVar28[1] == '\x04'" (cast_expression "(char)piVar28[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar28[1]" (identifier "piVar28") ([ "[") (number_literal "1") (] "]"))) (== "==") (char_literal "'\x04'" (' "'") (escape_sequence "\x04") (' "'"))) () ")")) (compound_statement "{\n          iVar26 = 0;\n          do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);\n        }" ({ "{") (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" (identifier "iVar26") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          } while (iVar19 != iVar26);" (do "do") (compound_statement "{\n            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);\n            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }\n            iVar26 = iVar26 + 1;\n          }" ({ "{") (expression_statement "piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);" (assignment_expression "piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8)" (identifier "piVar21") (= "=") (cast_expression "(int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8)" (( "(") (binary_expression "*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8" (pointer_expression "*__ptr" (* "*") (identifier "__ptr")) (+ "+") (binary_expression "*(int *)((int)local_78 + iVar26 * 4) * 8" (pointer_expression "*(int *)((int)local_78 + iVar26 * 4)" (* "*") (cast_expression "(int *)((int)local_78 + iVar26 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_78 + iVar26 * 4)" (( "(") (binary_expression "(int)local_78 + iVar26 * 4" (cast_expression "(int)local_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_78")) (+ "+") (binary_expression "iVar26 * 4" (identifier "iVar26") (* "*") (number_literal "4"))) () ")")))) (* "*") (number_literal "8"))) () ")")))) (; ";")) (if_statement "if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }" (if "if") (parenthesized_expression "(((char)piVar21[1] == '\t') && (*piVar21 == *piVar28))" (( "(") (binary_expression "((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)" (parenthesized_expression "((char)piVar21[1] == '\t')" (( "(") (binary_expression "(char)piVar21[1] == '\t'" (cast_expression "(char)piVar21[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar21[1]" (identifier "piVar21") ([ "[") (number_literal "1") (] "]"))) (== "==") (char_literal "'\t'" (' "'") (escape_sequence "\t") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*piVar21 == *piVar28)" (( "(") (binary_expression "*piVar21 == *piVar28" (pointer_expression "*piVar21" (* "*") (identifier "piVar21")) (== "==") (pointer_expression "*piVar28" (* "*") (identifier "piVar28"))) () ")"))) () ")")) (compound_statement "{\n              uVar31 = iVar19 - 1;\n              uVar18 = 0;\n              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);\n              if (uVar31 == 0) goto LAB_000289b4;\n              goto LAB_0002897d;\n            }" ({ "{") (expression_statement "uVar31 = iVar19 - 1;" (assignment_expression "uVar31 = iVar19 - 1" (identifier "uVar31") (= "=") (binary_expression "iVar19 - 1" (identifier "iVar19") (- "-") (number_literal "1"))) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);" (assignment_expression "iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8)" (identifier "iVar19") (= "=") (pointer_expression "**(int **)(__ptr[5] + iVar20 * 0xc + 8)" (* "*") (pointer_expression "*(int **)(__ptr[5] + iVar20 * 0xc + 8)" (* "*") (cast_expression "(int **)(__ptr[5] + iVar20 * 0xc + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(__ptr[5] + iVar20 * 0xc + 8)" (( "(") (binary_expression "__ptr[5] + iVar20 * 0xc + 8" (binary_expression "__ptr[5] + iVar20 * 0xc" (subscript_expression "__ptr[5]" (identifier "__ptr") ([ "[") (number_literal "5") (] "]")) (+ "+") (binary_expression "iVar20 * 0xc" (identifier "iVar20") (* "*") (number_literal "0xc"))) (+ "+") (number_literal "8")) () ")")))))) (; ";")) (if_statement "if (uVar31 == 0) goto LAB_000289b4;" (if "if") (parenthesized_expression "(uVar31 == 0)" (( "(") (binary_expression "uVar31 == 0" (identifier "uVar31") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000289b4;" (goto "goto") (statement_identifier "LAB_000289b4") (; ";"))) (goto_statement "goto LAB_0002897d;" (goto "goto") (statement_identifier "LAB_0002897d") (; ";")) (} "}"))) (expression_statement "iVar26 = iVar26 + 1;" (assignment_expression "iVar26 = iVar26 + 1" (identifier "iVar26") (= "=") (binary_expression "iVar26 + 1" (identifier "iVar26") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar19 != iVar26)" (( "(") (binary_expression "iVar19 != iVar26" (identifier "iVar19") (!= "!=") (identifier "iVar26")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_00028908;" (goto "goto") (statement_identifier "LAB_00028908") (; ";")) (} "}"))) (goto_statement "goto LAB_000289f2;" (goto "goto") (statement_identifier "LAB_000289f2") (; ";")) (} "}"))) (expression_statement "iVar7 = 0xc;" (assignment_expression "iVar7 = 0xc" (identifier "iVar7") (= "=") (number_literal "0xc")) (; ";")) (} "}")))) (labeled_statement "LAB_00028a39:\n  iVar19 = *piVar3;" (statement_identifier "LAB_00028a39") (: ":") (expression_statement "iVar19 = *piVar3;" (assignment_expression "iVar19 = *piVar3" (identifier "iVar19") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";"))) (expression_statement "puVar8 = *(undefined4 **)(iVar19 + 0x38);" (assignment_expression "puVar8 = *(undefined4 **)(iVar19 + 0x38)" (identifier "puVar8") (= "=") (pointer_expression "*(undefined4 **)(iVar19 + 0x38)" (* "*") (cast_expression "(undefined4 **)(iVar19 + 0x38)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar19 + 0x38)" (( "(") (binary_expression "iVar19 + 0x38" (identifier "iVar19") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "local_88 = iVar7;" (assignment_expression "local_88 = iVar7" (identifier "local_88") (= "=") (identifier "iVar7")) (; ";")) (while_statement "while (puVar8 != (undefined4 *)0x0) {\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }" (while "while") (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar8 != (undefined4 *)0x0" (identifier "puVar8") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    puVar16 = (undefined4 *)*puVar8;\n    free(puVar8);\n    puVar8 = puVar16;\n  }" ({ "{") (expression_statement "puVar16 = (undefined4 *)*puVar8;" (assignment_expression "puVar16 = (undefined4 *)*puVar8" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)*puVar8" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")))) (; ";")) (expression_statement "free(puVar8);" (call_expression "free(puVar8)" (identifier "free") (argument_list "(puVar8)" (( "(") (identifier "puVar8") () ")"))) (; ";")) (expression_statement "puVar8 = puVar16;" (assignment_expression "puVar8 = puVar16" (identifier "puVar8") (= "=") (identifier "puVar16")) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(iVar19 + 0x38) = 0;" (assignment_expression "*(undefined4 *)(iVar19 + 0x38) = 0" (pointer_expression "*(undefined4 *)(iVar19 + 0x38)" (* "*") (cast_expression "(undefined4 *)(iVar19 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x38)" (( "(") (binary_expression "iVar19 + 0x38" (identifier "iVar19") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar19 + 0x40) = 0x1f;" (assignment_expression "*(undefined4 *)(iVar19 + 0x40) = 0x1f" (pointer_expression "*(undefined4 *)(iVar19 + 0x40)" (* "*") (cast_expression "(undefined4 *)(iVar19 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x40)" (( "(") (binary_expression "iVar19 + 0x40" (identifier "iVar19") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (number_literal "0x1f")) (; ";")) (expression_statement "*(undefined4 *)(iVar19 + 0x34) = 0;" (assignment_expression "*(undefined4 *)(iVar19 + 0x34) = 0" (pointer_expression "*(undefined4 *)(iVar19 + 0x34)" (* "*") (cast_expression "(undefined4 *)(iVar19 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x34)" (( "(") (binary_expression "iVar19 + 0x34" (identifier "iVar19") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "free(*(void **)(iVar19 + 0x10));" (call_expression "free(*(void **)(iVar19 + 0x10))" (identifier "free") (argument_list "(*(void **)(iVar19 + 0x10))" (( "(") (pointer_expression "*(void **)(iVar19 + 0x10)" (* "*") (cast_expression "(void **)(iVar19 + 0x10)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar19 + 0x10)" (( "(") (binary_expression "iVar19 + 0x10" (identifier "iVar19") (+ "+") (number_literal "0x10")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar19 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(iVar19 + 0x10) = 0" (pointer_expression "*(undefined4 *)(iVar19 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar19 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar19 + 0x10)" (( "(") (binary_expression "iVar19 + 0x10" (identifier "iVar19") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "free(local_6c);" (call_expression "free(local_6c)" (identifier "free") (argument_list "(local_6c)" (( "(") (identifier "local_6c") () ")"))) (; ";")) (expression_statement "free(local_68);" (call_expression "free(local_68)" (identifier "free") (argument_list "(local_68)" (( "(") (identifier "local_68") () ")"))) (; ";")) (if_statement "if (local_29 != '\0') {\n    free(local_70);\n  }" (if "if") (parenthesized_expression "(local_29 != '\0')" (( "(") (binary_expression "local_29 != '\0'" (identifier "local_29") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    free(local_70);\n  }" ({ "{") (expression_statement "free(local_70);" (call_expression "free(local_70)" (identifier "free") (argument_list "(local_70)" (( "(") (identifier "local_70") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar7 = local_88;" (assignment_expression "iVar7 = local_88" (identifier "iVar7") (= "=") (identifier "local_88")) (; ";")) (if_statement "if (local_88 == 0) goto LAB_000282f4;" (if "if") (parenthesized_expression "(local_88 == 0)" (( "(") (binary_expression "local_88 == 0" (identifier "local_88") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000282f4;" (goto "goto") (statement_identifier "LAB_000282f4") (; ";"))) (labeled_statement "LAB_000282d8:\n  FUN_0001c000();" (statement_identifier "LAB_000282d8") (: ":") (expression_statement "FUN_0001c000();" (call_expression "FUN_0001c000()" (identifier "FUN_0001c000") (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "*piVar3 = 0;" (assignment_expression "*piVar3 = 0" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar3[1] = 0;" (assignment_expression "piVar3[1] = 0" (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar7 = local_88;" (assignment_expression "iVar7 = local_88" (identifier "iVar7") (= "=") (identifier "local_88")) (; ";")) (labeled_statement "LAB_000282f4:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002a720();\n  }" (statement_identifier "LAB_000282f4") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002a720();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_0002a720();\n  }" ({ "{") (expression_statement "FUN_0002a720();" (call_expression "FUN_0002a720()" (identifier "FUN_0002a720") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return iVar7;" (return "return") (identifier "iVar7") (; ";")) (} "}")))

type_1 function_1(type_2 *preg,char *pattern,size_t length,type_3 syntax)

{
  type_4 *prVar1;
  type_5 *puVar2;
  type_6 var_19;
  int var_69;
  type_7 *var_25;
  type_8 *pbVar6;
  type_9 *prVar7;
  type_4 token;
  type_10 **ppbVar8;
  type_2 *preg_00;
  type_4 *prVar9;
  type_11 *prVar10;
  size_t sVar11;
  type_6 *var_13;
  type_7 *puVar13;
  type_12 aVar14;
  type_1 var_29;
  type_10 *var_36;
  type_13 *var_44;
  type_13 *var_45;
  type_14 *var_46;
  type_14 *var_47;
  size_t *var_48;
  type_13 var_55;
  type_10 *var_43;
  type_15 var_22;
  type_16 *var_65;
  type_17 **pp_Var25;
  type_9 *var_4;
  type_8 *var_37;
  char var_50;
  type_18 var_7;
  type_18 var_5;
  int var_16;
  type_18 var_60;
  int var_38;
  int var_23;
  size_t var_49;
  type_10 *var_51;
  type_19 var_20;
  type_18 *puVar36;
  int var_39;
  size_t __size;
  type_10 *pbVar38;
  size_t var_9;
  type_18 var_59;
  type_18 uVar41;
  type_20 rVar42;
  type_10 *var_40;
  int var_15;
  type_21 *var_6;
  type_6 *var_17;
  type_7 **var_24;
  int var_2;
  bool var_18;
  bool var_14;
  type_6 var_56;
  type_22 uVar50;
  type_3 syntax_00;
  type_12 in_stack_ffffff44;
  type_1 *in_stack_ffffff48;
  type_9 *var_32;
  type_18 var_62;
  int var_41;
  int var_42;
  type_1 var_35;
  type_1 err_2;
  type_4 current_token;
  type_13 *var_66;
  type_23 regexp;
  
  var_56 = 0;
  uVar50 = var_1();
  puVar13 = (type_7 *)((type_24)uVar50 >> 0x20);
  preg_00 = (type_2 *)uVar50;
  var_4 = preg_00->buffer;
  var_69 = *(int *)(var_2 + 0x14);
  preg_00->field_0x1c = preg_00->field_0x1c & 0x90;
  var_35 = var_30;
  preg_00->syntax = (type_3)preg;
  preg_00->used = 0;
  preg_00->re_nsub = 0;
  if (preg_00->allocated < 0x88) {
    var_4 = (type_9 *)var_3(var_4,0x88);
    if (var_4 == (type_9 *)0x0) {
      var_29 = _REG_ESPACE;
      goto LAB_000282f4;
    }
    preg_00->allocated = 0x88;
    preg_00->buffer = var_4;
  }
  var_6 = (type_21 *)((type_18)&var_4->nodes_alloc & 0xfffffffc);
  preg_00->used = 0x88;
  var_4->nodes = (type_4 *)0x0;
  var_4->subexp_map = (type_13 *)0x0;
  var_5 = (type_18)((int)var_4 + (0x88 - (int)var_6)) >> 2;
  for (; var_5 != 0; var_5 = var_5 - 1) {
    *var_6 = 0;
    var_6 = var_6 + (type_18)var_56 * -2 + 1;
  }
  var_4->str_tree_storage_idx = 0x1f;
  if (var_7 < 0xaaaaaaa) {
    var_9 = var_7 + 1;
    var_4->nodes_alloc = var_9;
    prVar9 = (type_4 *)var_8(var_9 * 8);
    var_4->nodes = prVar9;
    if (var_7 == 0) {
      rVar42 = 0;
      var_5 = 1;
    }
    else {
      var_5 = 1;
      do {
        var_5 = var_5 * 2;
      } while (var_5 <= var_7);
      rVar42 = var_5 - 1;
    }
    prVar10 = (type_11 *)var_10(0xc,var_5);
    var_4->state_hash_mask = rVar42;
    var_4->state_table = prVar10;
    sVar11 = var_11();
    var_4->mb_cur_max = sVar11;
    var_13 = (type_6 *)var_12(0xe);
    if ((((*var_13 & 0xdf) == 0x55) && ((var_13[1] & 0xdf) == 0x54)) &&
       ((var_13[2] & 0xdf) == 0x46)) {
      var_18 = var_13[3] < 0x2d;
      var_14 = var_13[3] == 0x2d;
      var_16 = 2;
      var_13 = var_13 + var_14 + 3;
      var_17 = (type_6 *)(var_15 + 0x504b);
      do {
        if (var_16 == 0) break;
        var_16 = var_16 + -1;
        var_18 = *var_13 < *var_17;
        var_14 = *var_13 == *var_17;
        var_13 = var_13 + (type_18)var_56 * -2 + 1;
        var_17 = var_17 + (type_18)var_56 * -2 + 1;
      } while (var_14);
      if ((!var_18 && !var_14) == var_18) {
        var_4->field_0x58 = var_4->field_0x58 | 4;
      }
    }
    var_19 = var_4->field_0x58;
    var_4->field_0x58 = var_19 & 0xf7;
    if (1 < var_4->mb_cur_max) {
      if ((var_19 & 4) == 0) {
        var_20 = (type_19)var_10(0x20,1);
        var_4->sb_char = var_20;
        if (var_20 == (type_19)0x0) goto LAB_000282d0;
        var_16 = 0;
        do {
          var_5 = var_16 * 8;
          var_23 = 0;
          do {
            while( true ) {
              var_22 = var_21(var_5);
              if (var_22 != 0xffffffff) break;
              if ((var_5 & 0xffffff80) == 0) {
LAB_000283fc:
                var_4->field_0x58 = var_4->field_0x58 | 8;
              }
LAB_00028404:
              var_23 = var_23 + 1;
              var_5 = var_5 + 1;
              if (var_23 == 0x20) goto LAB_00028460;
            }
            puVar36 = (type_18 *)((int)var_4->sb_char + var_16);
            *puVar36 = *puVar36 | 1 << ((type_6)var_23 & 0x1f);
            if ((var_5 & 0xffffff80) != 0) goto LAB_00028404;
            if (var_22 != var_5) goto LAB_000283fc;
            var_23 = var_23 + 1;
            var_5 = var_5 + 1;
          } while (var_23 != 0x20);
LAB_00028460:
          var_16 = var_16 + 4;
        } while (var_16 != 0x20);
      }
      else {
        var_4->sb_char = (type_19)(var_15 + 0x58c9);
      }
    }
    if ((var_4->nodes != (type_4 *)0x0) && (var_4->state_table != (type_11 *)0x0)) {
      var_35 = var_30;
      var_25 = preg_00->translate;
      var_24 = &regexp.mbs;
      for (var_16 = 0x13; var_16 != 0; var_16 = var_16 + -1) {
        *var_24 = (type_7 *)0x0;
        var_24 = var_24 + (type_18)var_56 * -2 + 1;
      }
      var_5 = (type_18)preg & 0x400000;
      regexp.icase = var_5 != 0;
      regexp.mbs_allocated = var_25 != (type_7 *)0x0 || var_5 != 0;
      var_16 = var_4->mb_cur_max;
      regexp.map_notascii = (type_6)var_4->field_0x58 >> 3 & 1;
      regexp.is_utf8 = (type_6)var_4->field_0x58 >> 2 & 1;
      regexp.raw_mbs = puVar13;
      regexp.len = var_7;
      regexp.trans = var_25;
      regexp.mb_cur_max = var_16;
      if (var_7 != 0) {
        aVar14.idx = var_26(&regexp,var_9);
        if (aVar14.sbcset != (type_19)0x0) goto LAB_00028335;
        var_16 = var_4->mb_cur_max;
      }
      if (regexp.mbs_allocated != '\0') {
        puVar13 = regexp.mbs;
      }
      regexp.mbs = puVar13;
      if (var_5 == 0) {
        if (var_16 < 2) {
          var_16 = regexp.bufs_len;
          regexp.valid_raw_len = regexp.bufs_len;
          if (var_25 != (type_7 *)0x0) {
            if (regexp.len <= regexp.bufs_len) {
              regexp.bufs_len = regexp.len;
            }
            var_16 = regexp.valid_len;
            regexp.valid_raw_len = regexp.valid_len;
            if (regexp.valid_len < regexp.bufs_len) {
              puVar13[regexp.valid_len] =
                   regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];
              var_23 = regexp.valid_len + 1;
              var_16 = regexp.bufs_len;
              regexp.valid_raw_len = regexp.bufs_len;
              if (var_23 < regexp.bufs_len) {
                do {
                  puVar13[var_23] = regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + var_23]];
                  var_23 = var_23 + 1;
                  var_16 = regexp.bufs_len;
                } while (regexp.bufs_len != var_23);
              }
            }
          }
        }
        else {
          var_27(&regexp);
          var_16 = regexp.valid_len;
        }
      }
      else {
        if (1 < var_16) {
          do {
            aVar14.idx = var_28(&regexp);
            if (aVar14.sbcset != (type_19)0x0) goto LAB_00028335;
            var_16 = regexp.valid_len;
            if (((int)var_7 <= regexp.valid_raw_len) ||
               (var_4->mb_cur_max + regexp.valid_len < regexp.bufs_len)) goto LAB_00027d86;
            var_29 = var_26(&regexp,regexp.bufs_len * 2);
          } while (var_29 == var_30);
          var_32 = preg_00->buffer;
          var_35 = var_29;
          goto LAB_00027c60;
        }
        var_32 = (type_9 *)regexp.len;
        if (regexp.bufs_len <= regexp.len) {
          var_32 = (type_9 *)regexp.bufs_len;
        }
        if (regexp.valid_len < (int)var_32) {
          pp_Var25 = var_31();
          while( true ) {
            if (regexp.trans == (type_7 *)0x0) {
              puVar13[regexp.valid_len] =
                   (type_7)(*pp_Var25)[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]];
            }
            else {
              puVar13[regexp.valid_len] =
                   (type_7)(*pp_Var25)
                          [regexp.trans[regexp.raw_mbs[regexp.raw_mbs_idx + regexp.valid_len]]];
            }
            if (var_32 == (type_9 *)(regexp.valid_len + 1)) break;
            regexp.valid_len = regexp.valid_len + 1;
            puVar13 = regexp.mbs;
          }
        }
        else {
          var_32 = (type_9 *)regexp.valid_len;
        }
        regexp.valid_raw_len = (type_13)var_32;
        var_16 = regexp.valid_raw_len;
      }
LAB_00027d86:
      regexp.valid_len = var_16;
      var_35 = var_30;
      prVar7 = preg_00->buffer;
      preg_00->re_nsub = 0;
      prVar7->syntax = (type_3)preg;
      syntax_00 = 0x27db7;
      var_16 = var_33(&current_token,&regexp,(type_18)preg | 0x800000);
      regexp.cur_idx = regexp.cur_idx + var_16;
      var_36 = var_34((type_23 *)preg,(type_2 *)0x0,(type_4 *)&var_35,syntax_00,
                              in_stack_ffffff44.idx,in_stack_ffffff48);
      if ((var_35 != var_30) && (var_36 == (type_10 *)0x0)) {
        var_4->str_tree = (type_10 *)0x0;
        var_32 = preg_00->buffer;
        goto LAB_00027c60;
      }
      var_16 = prVar7->str_tree_storage_idx;
      if (var_16 == 0x1f) {
        var_37 = (type_8 *)var_8(0x3e4);
        if (var_37 != (type_8 *)0x0) {
          var_23 = 1;
          var_39 = 4;
          var_38 = 0x18;
          var_37->next = prVar7->str_tree_storage;
          var_16 = 0;
          prVar7->str_tree_storage = var_37;
          goto LAB_00027e0d;
        }
        var_32 = preg_00->buffer;
        if (var_36 != (type_10 *)0x0) {
          var_40 = (type_10 *)0x0;
          var_18 = true;
          goto LAB_00027e67;
        }
      }
      else {
        var_37 = prVar7->str_tree_storage;
        var_23 = var_16 + 1;
        var_38 = var_16 * 0x20 + 0x18;
        var_39 = var_16 * 0x20 + 4;
LAB_00027e0d:
        prVar7->str_tree_storage_idx = var_23;
        var_37->data[var_16].parent = (type_10 *)0x0;
        var_37->data[var_16].left = (type_10 *)0x0;
        var_37->data[var_16].right = (type_10 *)0x0;
        *(type_5 *)((int)&var_37->data[0].parent + var_38) = 2;
        puVar2 = &var_37->data[var_16].token.field_0x6;
        *puVar2 = *puVar2 & 0xf3;
        var_40 = (type_10 *)((int)var_37->data + var_39 + -4);
        var_18 = var_40 == (type_10 *)0x0;
        var_37->data[var_16].first = (type_10 *)0x0;
        var_32 = preg_00->buffer;
        var_37->data[var_16].next = (type_10 *)0x0;
        var_37->data[var_16].node_idx = -1;
        var_43 = var_40;
        if (var_36 != (type_10 *)0x0) {
LAB_00027e67:
          var_16 = prVar7->str_tree_storage_idx;
          if (var_16 == 0x1f) {
            var_37 = (type_8 *)var_8(0x3e4);
            if (var_37 == (type_8 *)0x0) goto LAB_00028d28;
            var_23 = 1;
            var_42 = 0x18;
            var_41 = 4;
            var_37->next = prVar7->str_tree_storage;
            var_16 = 0;
            prVar7->str_tree_storage = var_37;
          }
          else {
            var_23 = var_16 + 1;
            var_41 = var_16 * 0x20 + 4;
            var_42 = var_16 * 0x20 + 0x18;
            var_37 = prVar7->str_tree_storage;
          }
          prVar7->str_tree_storage_idx = var_23;
          var_37->data[var_16].parent = (type_10 *)0x0;
          var_43 = (type_10 *)((int)var_37->data + var_41 + -4);
          var_37->data[var_16].left = var_36;
          var_37->data[var_16].right = var_40;
          *(type_5 *)((int)&var_37->data[0].parent + var_42) = 0x10;
          puVar2 = &var_37->data[var_16].token.field_0x6;
          *puVar2 = *puVar2 & 0xf3;
          var_37->data[var_16].first = (type_10 *)0x0;
          var_37->data[var_16].next = (type_10 *)0x0;
          var_37->data[var_16].node_idx = -1;
          var_18 = (bool)(var_18 | var_43 == (type_10 *)0x0);
          var_36->parent = var_43;
          if (var_40 != (type_10 *)0x0) {
            var_40->parent = var_43;
          }
        }
        prVar7 = var_32;
        if (!var_18) {
          var_4->str_tree = var_43;
          sVar11 = var_32->nodes_alloc * 4;
          __size = var_32->nodes_alloc * 0xc;
          var_44 = (type_13 *)var_8(sVar11);
          var_32->nexts = var_44;
          var_45 = (type_13 *)var_8(sVar11);
          var_32->org_indices = var_45;
          var_46 = (type_14 *)var_8(__size);
          var_32->edests = var_46;
          var_47 = (type_14 *)var_8(__size);
          var_32->eclosures = var_47;
          if ((((var_44 != (type_13 *)0x0) && (var_45 != (type_13 *)0x0)) &&
              (var_46 != (type_14 *)0x0)) && (var_47 != (type_14 *)0x0)) {
            var_9 = preg_00->re_nsub;
            var_48 = (size_t *)var_8(var_9 * 4);
            var_32->subexp_map = (type_13 *)var_48;
            var_36 = var_32->str_tree;
            if (var_48 != (size_t *)0x0) {
              var_49 = 0;
              if (var_9 != 0) {
                do {
                  var_48[var_49] = var_49;
                  var_49 = var_49 + 1;
                } while (var_49 != var_9);
              }
              var_50 = (var_36->token).field_0x4;
              var_40 = var_36->left;
              var_43 = var_36;
LAB_00028010:
              pbVar38 = var_43;
              var_43 = var_40;
              var_51 = var_43;
              if (var_50 == '\x04') {
                aVar14 = *(type_12 *)(var_48 + (pbVar38->token).opr.idx);
                (pbVar38->token).opr = aVar14;
                var_32->used_bkref_map = var_32->used_bkref_map | 1 << (aVar14.c & 0x1f);
                goto joined_r0x00028003;
              }
              if (var_50 != '\x11') goto joined_r0x00028003;
              if (var_43 != (type_10 *)0x0) goto code_r0x00028148;
              goto LAB_00028038;
            }
            goto LAB_0002809c;
          }
          var_35 = _REG_ESPACE;
          goto LAB_00027c60;
        }
      }
LAB_00028d28:
      var_35 = _REG_ESPACE;
      var_4->str_tree = (type_10 *)0x0;
      goto LAB_00027c60;
    }
  }
LAB_000282d0:
  var_35 = _REG_ESPACE;
  goto LAB_000282d8;
code_r0x00028148:
  var_50 = (var_43->token).field_0x4;
  var_51 = var_43->left;
  var_40 = var_51;
  if (var_50 == '\x11') {
    var_16 = (var_43->token).opr.idx;
    pbVar38->left = var_51;
    if (var_51 != (type_10 *)0x0) {
      var_51->parent = pbVar38;
    }
    var_48[var_16] = var_48[(pbVar38->token).opr.idx];
    if (var_16 < 0x20) {
      var_32->used_bkref_map = var_32->used_bkref_map & ~(1 << ((type_6)var_16 & 0x1f));
    }
joined_r0x00028003:
    if (var_51 == (type_10 *)0x0) {
LAB_00028038:
      var_40 = (type_10 *)0x0;
      while ((var_51 = pbVar38->right, var_51 == var_40 || (var_51 == (type_10 *)0x0))) {
        ppbVar8 = &pbVar38->parent;
        var_40 = pbVar38;
        pbVar38 = *ppbVar8;
        if (*ppbVar8 == (type_10 *)0x0) {
          if (var_9 == 0) goto LAB_00028074;
          var_49 = *var_48;
          if (var_49 == 0) goto LAB_0002806d;
          goto LAB_0002809c;
        }
      }
    }
    var_50 = (var_51->token).field_0x4;
    var_40 = var_51->left;
    var_43 = var_51;
  }
  goto LAB_00028010;
  while (var_48[var_49] == var_49) {
LAB_0002806d:
    var_49 = var_49 + 1;
    if (var_49 == var_9) goto LAB_00028074;
  }
LAB_0002809c:
  do {
    var_43 = var_36->left;
    var_40 = var_36;
    while (var_36 = var_43, var_36 != (type_10 *)0x0) {
      var_40 = var_36;
      var_43 = var_36->left;
    }
    var_36 = var_40->right;
  } while (var_36 != (type_10 *)0x0);
  var_43 = (type_10 *)0x0;
  var_36 = (type_10 *)0x0;
  do {
    current_token.opr.sbcset = (type_19)0x0;
    if ((var_43 == (type_10 *)0x0) || ((var_43->token).field_0x4 != '\x11')) {
      if (var_36 != (type_10 *)0x0) {
        var_50 = (var_36->token).field_0x4;
        goto joined_r0x000280c8;
      }
    }
    else {
      var_36 = var_52((type_1 *)&current_token,preg_00,var_43);
      var_40->left = var_36;
      if (var_36 != (type_10 *)0x0) {
        var_36->parent = var_40;
      }
      var_36 = var_40->right;
      if (var_36 != (type_10 *)0x0) {
        var_50 = (var_36->token).field_0x4;
joined_r0x000280c8:
        if (var_50 == '\x11') {
          var_36 = var_52((type_1 *)&current_token,preg_00,var_36);
          var_40->right = var_36;
          if (var_36 != (type_10 *)0x0) {
            var_36->parent = var_40;
          }
        }
      }
      aVar14 = current_token.opr;
      if (current_token.opr.sbcset != (type_19)0x0) goto LAB_00028335;
    }
    var_51 = var_40->parent;
    if (var_51 == (type_10 *)0x0) {
      var_36 = var_32->str_tree;
      goto LAB_000281a0;
    }
    var_36 = var_51->right;
    if ((var_36 != (type_10 *)0x0) && (var_40 != var_36)) goto LAB_0002809c;
    var_43 = var_51->left;
    var_40 = var_51;
  } while( true );
LAB_00028074:
  var_53(var_48);
  var_32->subexp_map = (type_13 *)0x0;
  var_36 = var_32->str_tree;
  goto LAB_0002809c;
LAB_000281a0:
  do {
    do {
      var_40 = var_36;
      var_36 = var_40->left;
    } while (var_40->left != (type_10 *)0x0);
    var_36 = var_40->right;
  } while (var_40->right != (type_10 *)0x0);
  do {
    if ((var_40->token).field_0x4 == '\x10') {
      var_55 = var_40->left->node_idx;
      var_40->first = var_40->left->first;
      var_40->node_idx = var_55;
LAB_000281c7:
      var_43 = var_40->parent;
    }
    else {
      var_40->first = var_40;
      token._4_4_ = in_stack_ffffff48;
      token.opr.sbcset = in_stack_ffffff44.sbcset;
      var_55 = var_54(var_32,token);
      var_40->node_idx = var_55;
      if (var_55 == -1) goto LAB_00028330;
      if ((var_40->token).field_0x4 != '\f') goto LAB_000281c7;
      *(type_25 *)&var_32->nodes[var_55].field_0x4 =
           *(type_18 *)&var_32->nodes[var_55].field_0x4 & 0xfffc00ff |
           ((var_40->token).opr.ctx_type & 0x3ff) << 8;
      var_43 = var_40->parent;
    }
    if (var_43 == (type_10 *)0x0) {
      var_36 = var_32->str_tree;
      var_50 = (var_36->token).field_0x4;
      var_40 = var_36->left;
      var_43 = var_36;
      if (var_50 == '\v') goto LAB_00028283;
      goto LAB_00028250;
    }
    var_36 = var_43->right;
    var_18 = var_40 == var_36;
    var_40 = var_43;
  } while (var_36 == (type_10 *)0x0 || var_18);
  goto LAB_000281a0;
LAB_00028250:
  if (var_50 == '\x10') {
    var_51 = var_43->right;
    var_40->next = var_51->first;
    var_51->next = var_43->next;
  }
  else {
    if (var_40 != (type_10 *)0x0) {
      var_40->next = var_43->next;
    }
    var_51 = var_43->right;
    if (var_51 == (type_10 *)0x0) {
      if (var_40 == (type_10 *)0x0) {
        var_40 = var_43->parent;
        while( true ) {
          var_51 = var_40;
          if (var_51 == (type_10 *)0x0) goto LAB_00028398;
          var_40 = var_51->right;
          if ((var_40 != (type_10 *)0x0) && (var_40 != var_43)) break;
          var_40 = var_51->parent;
          var_43 = var_51;
        }
      }
    }
    else {
      if (var_40 == (type_10 *)0x0) {
        var_40 = var_51;
      }
      var_51->next = var_43->next;
    }
  }
  while( true ) {
    var_50 = (var_40->token).field_0x4;
    ppbVar8 = &var_40->left;
    var_43 = var_40;
    var_40 = *ppbVar8;
    if (var_50 != '\v') break;
LAB_00028283:
    var_40->next = var_43;
  }
  goto LAB_00028250;
  while (var_43 = var_51->parent, var_40 = var_51, var_51->parent != (type_10 *)0x0) {
    while( true ) {
      var_51 = var_43;
      var_36 = var_51->right;
      var_18 = var_36 == var_40;
      if (var_18 || var_36 == (type_10 *)0x0) break;
LAB_00028398:
      do {
        var_56 = (var_36->token).field_0x4;
        if (var_56 < 0x11) {
                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          var_29 = (*(type_26 *)(*(int *)(var_15 + 0x57dd + (type_18)var_56 * 4) + var_15 + 0xc669))
                             ();
          return var_29;
        }
        if ((var_56 & 8) != 0) {
                    /* WARNING: Subroutine does not return */
          var_57((char *)(var_15 + 0x5ac9),(char *)(var_15 + 0x503d),0x5cc,
                        (char *)(var_15 + 0x5895));
        }
        var_32->nexts[var_36->node_idx] = var_36->next->node_idx;
        var_40 = var_36->left;
        var_43 = var_36;
        var_36 = var_40;
      } while (var_40 != (type_10 *)0x0);
    }
  }
  var_14 = false;
  var_9 = 0;
  do {
    var_49 = var_9;
    if (var_32->nodes_len == var_9) goto LAB_000284fa;
LAB_000284dd:
    while( true ) {
      if (var_32->eclosures[var_49].nelem != 0) goto code_r0x000284f2;
      aVar14.idx = var_58((type_14 *)&current_token,var_32,var_49,true);
      if (aVar14.sbcset != (type_19)0x0) goto LAB_00028335;
      var_9 = var_49 + 1;
      if (var_32->eclosures[var_49].nelem != 0) break;
      var_53(var_66);
      var_49 = var_9;
      var_14 = var_18 || var_36 == (type_10 *)0x0;
      if (var_32->nodes_len == var_9) goto LAB_00028505;
    }
  } while( true );
code_r0x000284f2:
  var_9 = var_49 + 1;
  var_49 = var_9;
  if (var_32->nodes_len == var_9) {
LAB_000284fa:
    if (!var_14) {
      if (((((preg_00->field_0x1c & 0x10) != 0) || (preg_00->re_nsub == 0)) ||
          ((var_32->field_0x58 & 1) == 0)) && (var_32->nbackref == 0)) goto LAB_00028860;
      var_46 = (type_14 *)var_8(var_9 * 0xc);
      var_32->inveclosures = var_46;
      if (var_46 != (type_14 *)0x0) {
        var_59 = 0;
        if (var_9 != 0) goto LAB_0002875b;
        goto LAB_00028860;
      }
      var_35 = _REG_ESPACE;
      var_32 = preg_00->buffer;
      goto LAB_00027c60;
    }
LAB_00028505:
    var_49 = 0;
    var_14 = false;
  }
  goto LAB_000284dd;
LAB_00028330:
  aVar14.idx = _REG_ESPACE;
LAB_00028335:
  var_32 = preg_00->buffer;
  var_35 = (type_1)aVar14;
LAB_00027c60:
  var_37 = var_32->str_tree_storage;
  while (var_37 != (type_8 *)0x0) {
    pbVar6 = var_37->next;
    var_53(var_37);
    var_37 = pbVar6;
  }
  var_32->str_tree_storage = (type_8 *)0x0;
  var_32->str_tree_storage_idx = 0x1f;
  var_32->str_tree = (type_10 *)0x0;
  var_53(var_32->org_indices);
  var_32->org_indices = (type_13 *)0x0;
  var_53(regexp.wcs);
  var_53(regexp.offsets);
  if (regexp.mbs_allocated != '\0') {
    var_53(regexp.mbs);
  }
  goto LAB_000282d8;
LAB_0002897d:
  do {
    var_60 = var_59 + var_5 >> 1;
    if (var_23 <= var_66[var_60]) {
      if (var_60 <= var_5) break;
      uVar41 = var_5 + var_60 >> 1;
      var_38 = var_66[uVar41];
      var_59 = var_60;
      var_60 = uVar41;
      while (var_23 <= var_38) {
        if (var_60 <= var_5) goto LAB_000289b4;
        uVar41 = var_5 + var_60 >> 1;
        var_59 = var_60;
        var_60 = uVar41;
        var_38 = var_66[uVar41];
      }
    }
    var_5 = var_60 + 1;
  } while (var_5 < var_59);
LAB_000289b4:
  if (var_66[var_5] == var_23) {
LAB_00028908:
    var_16 = var_16 + 1;
    aVar14 = (type_12)current_token._4_4_;
    if ((int)current_token._4_4_ <= var_16) goto LAB_000289f2;
    goto LAB_00028917;
  }
  var_29 = var_61((type_14 *)&current_token,var_4->eclosures + var_23);
  if (var_29 != var_30) goto LAB_00028a39;
  var_16 = 1;
  aVar14 = (type_12)current_token._4_4_;
  if ((int)current_token._4_4_ < 2) goto LAB_000289f2;
  goto LAB_00028917;
LAB_0002875b:
  while( true ) {
    var_46 = var_46 + var_59;
    var_46->alloc = 0;
    var_46->nelem = 0;
    var_46->elems = (type_13 *)0x0;
    var_60 = var_32->nodes_len;
    if (var_60 <= var_59 + 1) break;
    var_46 = var_32->inveclosures;
    var_59 = var_59 + 1;
  }
  if (var_60 != 0) {
    var_62 = 0;
    var_32 = (type_9 *)var_32->eclosures;
    do {
      var_44 = ((type_14 *)((int)var_32 + var_62 * 0xc))->elems;
      if (0 < ((type_14 *)((int)var_32 + var_62 * 0xc))->nelem) {
        var_16 = 0;
        do {
          var_46 = prVar7->inveclosures + var_44[var_16];
          var_23 = var_46->nelem;
          var_45 = var_46->elems;
          if (var_46->alloc == var_23) {
            var_46->alloc = (var_23 + 1) * 2;
            var_45 = (type_13 *)var_3(var_45,(var_23 + 1) * 8);
            if (var_45 == (type_13 *)0x0) goto LAB_00028330;
            var_32 = (type_9 *)prVar7->eclosures;
            var_23 = var_46->nelem;
            var_46->elems = var_45;
          }
          var_16 = var_16 + 1;
          var_46->nelem = var_23 + 1;
          var_45[var_23] = var_62;
        } while (var_16 < ((type_14 *)((int)var_32 + var_62 * 0xc))->nelem);
        var_60 = prVar7->nodes_len;
      }
      var_62 = var_62 + 1;
    } while (var_62 < var_60);
  }
LAB_00028860:
  var_35 = var_30;
  if ((((type_6)var_4->field_0x58 >> 2 & var_5 == 0) != 0) && (preg_00->translate == (type_7 *)0x0)) {
    if (var_4->nodes_len != 0) {
      if (0xc < (type_6)var_4->nodes->field_0x4) {
                    /* WARNING: Subroutine does not return */
        var_63();
      }
                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      var_29 = (*(type_26 *)(*(int *)(var_15 + 0x5821 + (type_18)(type_6)var_4->nodes->field_0x4 * 4) +
                         var_15 + 0xc669))();
      return var_29;
    }
    var_4->mb_cur_max = 1;
    var_4->field_0x58 = (0 < var_4->nbackref) * '\x02' | var_4->field_0x58 & 0xf9;
  }
  var_16 = var_4->str_tree->first->node_idx;
  var_4->init_node = var_16;
  var_46 = var_4->eclosures;
  aVar14 = (type_12)var_46[var_16].nelem;
  if (aVar14.idx < 1) {
    current_token.opr.sbcset = (type_19)0x0;
    current_token._4_4_ = 0;
    var_66 = (type_13 *)0x0;
    err_2 = var_30;
LAB_000289f2:
    var_65 = var_64(&err_2,var_4,(type_14 *)&current_token,0);
    var_4->init_state = var_65;
    var_29 = err_2;
    if (var_65 != (type_16 *)0x0) {
      if ((char)var_65->field_0x34 < '\0') {
        var_65 = var_64(&err_2,var_4,(type_14 *)&current_token,1);
        var_4->init_state_word = var_65;
        var_65 = var_64(&err_2,var_4,(type_14 *)&current_token,2);
        var_4->init_state_nl = var_65;
        var_65 = var_64(&err_2,var_4,(type_14 *)&current_token,6);
        var_4->init_state_begbuf = var_65;
        var_29 = err_2;
        if (((var_4->init_state_word == (type_16 *)0x0) ||
            (var_4->init_state_nl == (type_16 *)0x0)) || (var_65 == (type_16 *)0x0))
        goto LAB_00028a39;
      }
      else {
        var_4->init_state_begbuf = var_65;
        var_4->init_state_nl = var_65;
        var_4->init_state_word = var_65;
      }
      var_53(var_66);
      var_29 = var_30;
    }
  }
  else {
    current_token.opr = aVar14;
    current_token._4_4_ = aVar14;
    var_66 = (type_13 *)var_8(aVar14.idx * 4);
    if (var_66 != (type_13 *)0x0) {
      var_67(var_66,var_46[var_16].elems,aVar14.idx * 4);
      err_2 = var_30;
      if (0 < var_4->nbackref) {
        var_16 = 0;
LAB_00028917:
        prVar9 = var_4->nodes + var_66[var_16];
        if (prVar9->field_0x4 == '\x04') {
          var_20 = (type_19)0x0;
          do {
            prVar1 = var_4->nodes + var_66[(int)var_20];
            if ((prVar1->field_0x4 == '\t') && ((prVar1->opr).sbcset == (prVar9->opr).sbcset)) {
              var_59 = aVar14.idx - 1;
              var_5 = 0;
              var_23 = *var_4->edests[var_66[var_16]].elems;
              if (var_59 == 0) goto LAB_000289b4;
              goto LAB_0002897d;
            }
            var_20 = (type_19)((int)var_20 + 1);
          } while (aVar14.sbcset != var_20);
        }
        goto LAB_00028908;
      }
      goto LAB_000289f2;
    }
    var_29 = _REG_ESPACE;
  }
LAB_00028a39:
  prVar7 = preg_00->buffer;
  var_37 = prVar7->str_tree_storage;
  var_35 = var_29;
  while (var_37 != (type_8 *)0x0) {
    pbVar6 = var_37->next;
    var_53(var_37);
    var_37 = pbVar6;
  }
  prVar7->str_tree_storage = (type_8 *)0x0;
  prVar7->str_tree_storage_idx = 0x1f;
  prVar7->str_tree = (type_10 *)0x0;
  var_53(prVar7->org_indices);
  prVar7->org_indices = (type_13 *)0x0;
  var_53(regexp.wcs);
  var_53(regexp.offsets);
  if (regexp.mbs_allocated != '\0') {
    var_53(regexp.mbs);
  }
  var_29 = var_35;
  if (var_35 == var_30) goto LAB_000282f4;
LAB_000282d8:
  var_68(var_4);
  preg_00->buffer = (type_9 *)0x0;
  preg_00->allocated = 0;
  var_29 = var_35;
LAB_000282f4:
  if (var_69 != *(int *)(var_2 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_70();
  }
  return var_29;
}


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

int MASKED(uint param_1)

{
  byte bVar1;
  undefined4 uVar2;
  int *piVar3;
  void *pvVar4;
  size_t sVar5;
  byte *pbVar6;
  int iVar7;
  undefined4 *puVar8;
  void *pvVar9;
  void *pvVar10;
  void *pvVar11;
  int *piVar12;
  undefined4 *puVar13;
  wint_t wVar14;
  __int32_t **pp_Var15;
  int *__ptr;
  undefined4 *puVar16;
  char cVar17;
  uint extraout_ECX;
  uint uVar18;
  int iVar19;
  int iVar20;
  int *piVar21;
  int *piVar22;
  uint uVar23;
  int *piVar24;
  int *piVar25;
  int iVar26;
  int iVar27;
  int *piVar28;
  size_t __size;
  int *piVar29;
  undefined4 *puVar30;
  uint uVar31;
  uint uVar32;
  int unaff_EDI;
  byte *pbVar33;
  void **ppvVar34;
  int in_GS_OFFSET;
  bool bVar35;
  bool bVar36;
  byte bVar37;
  undefined8 uVar38;
  int *local_b0;
  uint local_9c;
  int local_98;
  int local_94;
  int local_88;
  int local_84;
  int local_80;
  int local_7c;
  void *local_78;
  void *local_74;
  void *local_70;
  void *local_6c;
  void *local_68;
  int local_5c;
  uint local_58;
  uint local_54;
  uint local_50;
  int local_4c;
  uint local_44;
  int local_34;
  undefined1 local_2c;
  byte local_2b;
  byte local_2a;
  char local_29;
  int local_24;
  int local_20;
  
  bVar37 = 0;
  uVar38 = FUN_0002a2ea();
  pvVar9 = (void *)((ulonglong)uVar38 >> 0x20);
  piVar3 = (int *)uVar38;
  __ptr = (int *)*piVar3;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  *(byte *)(piVar3 + 7) = *(byte *)(piVar3 + 7) & 0x90;
  local_88 = 0;
  piVar3[3] = param_1;
  piVar3[2] = 0;
  piVar3[6] = 0;
  if ((uint)piVar3[1] < 0x88) {
    __ptr = (int *)realloc(__ptr,0x88);
    if (__ptr == (int *)0x0) {
      iVar7 = 0xc;
      goto LAB_000282f4;
    }
    piVar3[1] = 0x88;
    *piVar3 = (int)__ptr;
  }
  piVar3[2] = 0x88;
  *__ptr = 0;
  __ptr[0x21] = 0;
  puVar8 = (undefined4 *)((uint)(__ptr + 1) & 0xfffffffc);
  for (uVar18 = (uint)((int)__ptr + (0x88 - (int)((uint)(__ptr + 1) & 0xfffffffc))) >> 2;
      uVar18 != 0; uVar18 = uVar18 - 1) {
    *puVar8 = 0;
    puVar8 = puVar8 + (uint)bVar37 * -2 + 1;
  }
  __ptr[0x10] = 0x1f;
  if (extraout_ECX < 0xaaaaaaa) {
    iVar7 = extraout_ECX + 1;
    __ptr[1] = iVar7;
    pvVar4 = malloc(iVar7 * 8);
    *__ptr = (int)pvVar4;
    if (extraout_ECX == 0) {
      iVar19 = 0;
      uVar18 = 1;
    }
    else {
      uVar18 = 1;
      do {
        uVar18 = uVar18 * 2;
      } while (uVar18 <= extraout_ECX);
      iVar19 = uVar18 - 1;
    }
    pvVar4 = calloc(0xc,uVar18);
    __ptr[0x11] = iVar19;
    __ptr[8] = (int)pvVar4;
    sVar5 = __ctype_get_mb_cur_max();
    __ptr[0x17] = sVar5;
    pbVar6 = (byte *)nl_langinfo(0xe);
    if ((((*pbVar6 & 0xdf) == 0x55) && ((pbVar6[1] & 0xdf) == 0x54)) && ((pbVar6[2] & 0xdf) == 0x46)
       ) {
      bVar35 = pbVar6[3] < 0x2d;
      bVar36 = pbVar6[3] == 0x2d;
      iVar19 = 2;
      pbVar6 = pbVar6 + bVar36 + 3;
      pbVar33 = (byte *)(unaff_EDI + 0x504b);
      do {
        if (iVar19 == 0) break;
        iVar19 = iVar19 + -1;
        bVar35 = *pbVar6 < *pbVar33;
        bVar36 = *pbVar6 == *pbVar33;
        pbVar6 = pbVar6 + (uint)bVar37 * -2 + 1;
        pbVar33 = pbVar33 + (uint)bVar37 * -2 + 1;
      } while (bVar36);
      if ((!bVar35 && !bVar36) == bVar35) {
        *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 4;
      }
    }
    bVar1 = *(byte *)(__ptr + 0x16);
    *(byte *)(__ptr + 0x16) = bVar1 & 0xf7;
    if (1 < __ptr[0x17]) {
      if ((bVar1 & 4) == 0) {
        pvVar4 = calloc(0x20,1);
        __ptr[0xf] = (int)pvVar4;
        if (pvVar4 == (void *)0x0) goto LAB_000282d0;
        iVar19 = 0;
        do {
          uVar18 = iVar19 * 8;
          iVar20 = 0;
          do {
            while( true ) {
              wVar14 = btowc(uVar18);
              if (wVar14 != 0xffffffff) break;
              if ((uVar18 & 0xffffff80) == 0) {
LAB_000283fc:
                *(byte *)(__ptr + 0x16) = *(byte *)(__ptr + 0x16) | 8;
              }
LAB_00028404:
              iVar20 = iVar20 + 1;
              uVar18 = uVar18 + 1;
              if (iVar20 == 0x20) goto LAB_00028460;
            }
            *(uint *)(__ptr[0xf] + iVar19) =
                 *(uint *)(__ptr[0xf] + iVar19) | 1 << ((byte)iVar20 & 0x1f);
            if ((uVar18 & 0xffffff80) != 0) goto LAB_00028404;
            if (wVar14 != uVar18) goto LAB_000283fc;
            iVar20 = iVar20 + 1;
            uVar18 = uVar18 + 1;
          } while (iVar20 != 0x20);
LAB_00028460:
          iVar19 = iVar19 + 4;
        } while (iVar19 != 0x20);
      }
      else {
        __ptr[0xf] = unaff_EDI + 0x58c9;
      }
    }
    if ((*__ptr != 0) && (__ptr[8] != 0)) {
      local_88 = 0;
      iVar19 = piVar3[5];
      ppvVar34 = &local_70;
      for (iVar20 = 0x13; iVar20 != 0; iVar20 = iVar20 + -1) {
        *ppvVar34 = (void *)0x0;
        ppvVar34 = ppvVar34 + (uint)bVar37 * -2 + 1;
      }
      uVar18 = param_1 & 0x400000;
      local_2c = uVar18 != 0;
      local_29 = iVar19 != 0 || uVar18 != 0;
      iVar20 = __ptr[0x17];
      local_2a = *(byte *)(__ptr + 0x16) >> 3 & 1;
      local_2b = *(byte *)(__ptr + 0x16) >> 2 & 1;
      local_74 = pvVar9;
      local_44 = extraout_ECX;
      local_34 = iVar19;
      local_24 = iVar20;
      if (extraout_ECX != 0) {
        iVar7 = FUN_00018140(&local_74,iVar7);
        if (iVar7 != 0) goto LAB_00028335;
        iVar20 = __ptr[0x17];
      }
      if (local_29 != '\0') {
        pvVar9 = local_70;
      }
      local_70 = pvVar9;
      if (uVar18 == 0) {
        if (iVar20 < 2) {
          uVar31 = local_50;
          local_54 = local_50;
          if (iVar19 != 0) {
            if ((int)local_44 <= (int)local_50) {
              local_50 = local_44;
            }
            uVar31 = local_58;
            local_54 = local_58;
            if ((int)local_58 < (int)local_50) {
              *(undefined1 *)((int)pvVar9 + local_58) =
                   *(undefined1 *)(local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));
              local_58 = local_58 + 1;
              uVar31 = local_50;
              local_54 = local_50;
              if ((int)local_58 < (int)local_50) {
                do {
                  *(undefined1 *)((int)pvVar9 + local_58) =
                       *(undefined1 *)
                        (local_34 + (uint)*(byte *)((int)local_74 + local_5c + local_58));
                  local_58 = local_58 + 1;
                  uVar31 = local_50;
                } while (local_50 != local_58);
              }
            }
          }
        }
        else {
          FUN_00018420();
          uVar31 = local_58;
        }
      }
      else {
        if (1 < iVar20) {
          do {
            iVar7 = FUN_00018640(&local_74);
            if (iVar7 != 0) goto LAB_00028335;
            uVar31 = local_58;
            if (((int)extraout_ECX <= (int)local_54) ||
               ((int)(__ptr[0x17] + local_58) < (int)local_50)) goto LAB_00027d86;
            iVar7 = FUN_00018140(&local_74,local_50 * 2);
          } while (iVar7 == 0);
          local_b0 = (int *)*piVar3;
          local_88 = iVar7;
          goto LAB_00027c60;
        }
        local_b0 = (int *)local_44;
        if ((int)local_50 <= (int)local_44) {
          local_b0 = (int *)local_50;
        }
        if ((int)local_58 < (int)local_b0) {
          pp_Var15 = __ctype_toupper_loc();
          while( true ) {
            uVar31 = (uint)*(byte *)((int)local_74 + local_5c + local_58);
            if (local_34 == 0) {
              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[uVar31];
            }
            else {
              *(char *)((int)pvVar9 + local_58) = (char)(*pp_Var15)[*(byte *)(local_34 + uVar31)];
            }
            if (local_b0 == (int *)(local_58 + 1)) break;
            local_58 = local_58 + 1;
            pvVar9 = local_70;
          }
        }
        else {
          local_b0 = (int *)local_58;
        }
        local_54 = (uint)local_b0;
        uVar31 = local_54;
      }
LAB_00027d86:
      local_58 = uVar31;
      local_88 = 0;
      iVar7 = *piVar3;
      piVar3[6] = 0;
      *(uint *)(iVar7 + 0x80) = param_1;
      iVar19 = FUN_0001afc0();
      local_4c = local_4c + iVar19;
      puVar8 = (undefined4 *)FUN_00026f90(param_1,0,&local_88);
      if ((local_88 != 0) && (puVar8 == (undefined4 *)0x0)) {
        __ptr[0xd] = 0;
        local_b0 = (int *)*piVar3;
        goto LAB_00027c60;
      }
      iVar19 = *(int *)(iVar7 + 0x40);
      if (iVar19 == 0x1f) {
        puVar16 = (undefined4 *)malloc(0x3e4);
        if (puVar16 != (undefined4 *)0x0) {
          iVar20 = 1;
          iVar27 = 4;
          iVar26 = 0x18;
          *puVar16 = *(undefined4 *)(iVar7 + 0x38);
          iVar19 = 0;
          *(undefined4 **)(iVar7 + 0x38) = puVar16;
          goto LAB_00027e0d;
        }
        local_b0 = (int *)*piVar3;
        if (puVar8 != (undefined4 *)0x0) {
          piVar28 = (int *)0x0;
          bVar35 = true;
          goto LAB_00027e67;
        }
      }
      else {
        puVar16 = *(undefined4 **)(iVar7 + 0x38);
        iVar20 = iVar19 + 1;
        iVar26 = iVar19 * 0x20 + 0x18;
        iVar27 = iVar19 * 0x20 + 4;
LAB_00027e0d:
        *(int *)(iVar7 + 0x40) = iVar20;
        puVar16[iVar19 * 8 + 1] = 0;
        puVar16[iVar19 * 8 + 2] = 0;
        puVar16[iVar19 * 8 + 3] = 0;
        *(undefined1 *)((int)puVar16 + iVar26 + 4) = 2;
        pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);
        *pbVar6 = *pbVar6 & 0xf3;
        piVar28 = (int *)(iVar27 + (int)puVar16);
        bVar35 = piVar28 == (int *)0x0;
        puVar16[iVar19 * 8 + 4] = 0;
        local_b0 = (int *)*piVar3;
        puVar16[iVar19 * 8 + 5] = 0;
        puVar16[iVar19 * 8 + 8] = 0xffffffff;
        piVar21 = piVar28;
        if (puVar8 != (undefined4 *)0x0) {
LAB_00027e67:
          iVar19 = *(int *)(iVar7 + 0x40);
          if (iVar19 == 0x1f) {
            puVar16 = (undefined4 *)malloc(0x3e4);
            if (puVar16 == (undefined4 *)0x0) goto LAB_00028d28;
            iVar20 = 1;
            local_94 = 0x18;
            local_98 = 4;
            *puVar16 = *(undefined4 *)(iVar7 + 0x38);
            iVar19 = 0;
            *(undefined4 **)(iVar7 + 0x38) = puVar16;
          }
          else {
            iVar20 = iVar19 + 1;
            local_98 = iVar19 * 0x20 + 4;
            local_94 = iVar19 * 0x20 + 0x18;
            puVar16 = *(undefined4 **)(iVar7 + 0x38);
          }
          *(int *)(iVar7 + 0x40) = iVar20;
          puVar16[iVar19 * 8 + 1] = 0;
          piVar21 = (int *)(local_98 + (int)puVar16);
          puVar16[iVar19 * 8 + 2] = puVar8;
          puVar16[iVar19 * 8 + 3] = piVar28;
          *(undefined1 *)((int)puVar16 + local_94 + 4) = 0x10;
          pbVar6 = (byte *)((int)puVar16 + iVar19 * 0x20 + 0x1e);
          *pbVar6 = *pbVar6 & 0xf3;
          puVar16[iVar19 * 8 + 4] = 0;
          puVar16[iVar19 * 8 + 5] = 0;
          puVar16[iVar19 * 8 + 8] = 0xffffffff;
          bVar35 = (bool)(bVar35 | piVar21 == (int *)0x0);
          *puVar8 = piVar21;
          if (piVar28 != (int *)0x0) {
            *piVar28 = (int)piVar21;
          }
        }
        piVar28 = local_b0;
        if (!bVar35) {
          __ptr[0xd] = (int)piVar21;
          sVar5 = local_b0[1] * 4;
          __size = local_b0[1] * 0xc;
          pvVar9 = malloc(sVar5);
          local_b0[3] = (int)pvVar9;
          pvVar4 = malloc(sVar5);
          local_b0[4] = (int)pvVar4;
          pvVar10 = malloc(__size);
          local_b0[5] = (int)pvVar10;
          pvVar11 = malloc(__size);
          local_b0[6] = (int)pvVar11;
          if ((((pvVar9 != (void *)0x0) && (pvVar4 != (void *)0x0)) && (pvVar10 != (void *)0x0)) &&
             (pvVar11 != (void *)0x0)) {
            iVar7 = piVar3[6];
            piVar12 = (int *)malloc(iVar7 * 4);
            local_b0[0x21] = (int)piVar12;
            piVar21 = (int *)local_b0[0xd];
            if (piVar12 != (int *)0x0) {
              iVar19 = 0;
              if (iVar7 != 0) {
                do {
                  piVar12[iVar19] = iVar19;
                  iVar19 = iVar19 + 1;
                } while (iVar19 != iVar7);
              }
              cVar17 = (char)piVar21[6];
              piVar22 = (int *)piVar21[1];
              piVar25 = piVar21;
LAB_00028010:
              piVar29 = piVar25;
              piVar25 = piVar22;
              piVar24 = piVar25;
              if (cVar17 == '\x04') {
                iVar19 = piVar12[piVar29[5]];
                piVar29[5] = iVar19;
                local_b0[0x14] = local_b0[0x14] | 1 << ((byte)iVar19 & 0x1f);
                goto joined_r0x00028003;
              }
              if (cVar17 != '\x11') goto joined_r0x00028003;
              if (piVar25 != (int *)0x0) goto code_r0x00028148;
              goto LAB_00028038;
            }
            goto LAB_0002809c;
          }
          local_88 = 0xc;
          goto LAB_00027c60;
        }
      }
LAB_00028d28:
      local_88 = 0xc;
      __ptr[0xd] = 0;
      goto LAB_00027c60;
    }
  }
LAB_000282d0:
  local_88 = 0xc;
  goto LAB_000282d8;
code_r0x00028148:
  cVar17 = (char)piVar25[6];
  piVar24 = (int *)piVar25[1];
  piVar22 = piVar24;
  if (cVar17 == '\x11') {
    iVar19 = piVar25[5];
    piVar29[1] = (int)piVar24;
    if (piVar24 != (int *)0x0) {
      *piVar24 = (int)piVar29;
    }
    piVar12[iVar19] = piVar12[piVar29[5]];
    if (iVar19 < 0x20) {
      local_b0[0x14] = local_b0[0x14] & ~(1 << ((byte)iVar19 & 0x1f));
    }
joined_r0x00028003:
    if (piVar24 == (int *)0x0) {
LAB_00028038:
      piVar22 = (int *)0x0;
      while ((piVar24 = (int *)piVar29[2], piVar24 == piVar22 || (piVar24 == (int *)0x0))) {
        piVar25 = (int *)*piVar29;
        piVar22 = piVar29;
        piVar29 = piVar25;
        if (piVar25 == (int *)0x0) {
          if (iVar7 == 0) goto LAB_00028074;
          iVar19 = *piVar12;
          if (iVar19 == 0) goto LAB_0002806d;
          goto LAB_0002809c;
        }
      }
    }
    cVar17 = (char)piVar24[6];
    piVar22 = (int *)piVar24[1];
    piVar25 = piVar24;
  }
  goto LAB_00028010;
  while (piVar12[iVar19] == iVar19) {
LAB_0002806d:
    iVar19 = iVar19 + 1;
    if (iVar19 == iVar7) goto LAB_00028074;
  }
LAB_0002809c:
  do {
    piVar22 = (int *)piVar21[1];
    piVar12 = piVar21;
    while (piVar21 = piVar22, piVar21 != (int *)0x0) {
      piVar12 = piVar21;
      piVar22 = (int *)piVar21[1];
    }
    piVar21 = (int *)piVar12[2];
  } while (piVar21 != (int *)0x0);
  iVar7 = 0;
  piVar21 = (int *)0x0;
  do {
    local_80 = 0;
    if ((iVar7 == 0) || (*(char *)(iVar7 + 0x18) != '\x11')) {
      if (piVar21 != (int *)0x0) {
        cVar17 = (char)piVar21[6];
        goto joined_r0x000280c8;
      }
    }
    else {
      puVar8 = (undefined4 *)FUN_00020ab0();
      piVar12[1] = (int)puVar8;
      if (puVar8 != (undefined4 *)0x0) {
        *puVar8 = piVar12;
      }
      if (piVar12[2] != 0) {
        cVar17 = *(char *)(piVar12[2] + 0x18);
joined_r0x000280c8:
        if (cVar17 == '\x11') {
          puVar8 = (undefined4 *)FUN_00020ab0();
          piVar12[2] = (int)puVar8;
          if (puVar8 != (undefined4 *)0x0) {
            *puVar8 = piVar12;
          }
        }
      }
      iVar7 = local_80;
      if (local_80 != 0) goto LAB_00028335;
    }
    piVar22 = (int *)*piVar12;
    if (piVar22 == (int *)0x0) {
      puVar8 = (undefined4 *)local_b0[0xd];
      goto LAB_000281a0;
    }
    piVar21 = (int *)piVar22[2];
    if ((piVar21 != (int *)0x0) && (piVar12 != piVar21)) goto LAB_0002809c;
    iVar7 = piVar22[1];
    piVar12 = piVar22;
  } while( true );
LAB_00028074:
  free(piVar12);
  local_b0[0x21] = 0;
  piVar21 = (int *)local_b0[0xd];
  goto LAB_0002809c;
LAB_000281a0:
  do {
    do {
      puVar16 = puVar8;
      puVar8 = (undefined4 *)puVar16[1];
    } while ((undefined4 *)puVar16[1] != (undefined4 *)0x0);
    puVar8 = (undefined4 *)puVar16[2];
  } while ((undefined4 *)puVar16[2] != (undefined4 *)0x0);
  do {
    if (*(char *)(puVar16 + 6) == '\x10') {
      uVar2 = *(undefined4 *)(puVar16[1] + 0x1c);
      puVar16[3] = *(undefined4 *)(puVar16[1] + 0xc);
      puVar16[7] = uVar2;
LAB_000281c7:
      puVar13 = (undefined4 *)*puVar16;
    }
    else {
      puVar16[3] = puVar16;
      iVar7 = FUN_00018d20();
      puVar16[7] = iVar7;
      if (iVar7 == -1) goto LAB_00028330;
      if (*(char *)(puVar16 + 6) != '\f') goto LAB_000281c7;
      *(uint *)(*local_b0 + 4 + iVar7 * 8) =
           *(uint *)(*local_b0 + 4 + iVar7 * 8) & 0xfffc00ff | (puVar16[5] & 0x3ff) << 8;
      puVar13 = (undefined4 *)*puVar16;
    }
    if (puVar13 == (undefined4 *)0x0) {
      puVar8 = (undefined4 *)local_b0[0xd];
      cVar17 = *(char *)(puVar8 + 6);
      puVar16 = (undefined4 *)puVar8[1];
      puVar13 = puVar8;
      if (cVar17 == '\v') goto LAB_00028283;
      goto LAB_00028250;
    }
    puVar8 = (undefined4 *)puVar13[2];
    bVar35 = puVar16 == puVar8;
    puVar16 = puVar13;
  } while (puVar8 == (undefined4 *)0x0 || bVar35);
  goto LAB_000281a0;
LAB_00028250:
  if (cVar17 == '\x10') {
    iVar7 = puVar13[2];
    puVar16[4] = *(undefined4 *)(iVar7 + 0xc);
    *(undefined4 *)(iVar7 + 0x10) = puVar13[4];
  }
  else {
    if (puVar16 != (undefined4 *)0x0) {
      puVar16[4] = puVar13[4];
    }
    puVar30 = (undefined4 *)puVar13[2];
    if (puVar30 == (undefined4 *)0x0) {
      if (puVar16 == (undefined4 *)0x0) {
        puVar16 = (undefined4 *)*puVar13;
        while( true ) {
          puVar30 = puVar16;
          if (puVar30 == (undefined4 *)0x0) goto LAB_00028398;
          puVar16 = (undefined4 *)puVar30[2];
          if ((puVar16 != (undefined4 *)0x0) && (puVar16 != puVar13)) break;
          puVar16 = (undefined4 *)*puVar30;
          puVar13 = puVar30;
        }
      }
    }
    else {
      if (puVar16 == (undefined4 *)0x0) {
        puVar16 = puVar30;
      }
      puVar30[4] = puVar13[4];
    }
  }
  while( true ) {
    cVar17 = *(char *)(puVar16 + 6);
    puVar30 = puVar16 + 1;
    puVar13 = puVar16;
    puVar16 = (undefined4 *)*puVar30;
    if (cVar17 != '\v') break;
LAB_00028283:
    puVar16[4] = puVar13;
  }
  goto LAB_00028250;
  while (puVar13 = (undefined4 *)*puVar30, puVar16 = puVar30,
        (undefined4 *)*puVar30 != (undefined4 *)0x0) {
    while( true ) {
      puVar30 = puVar13;
      puVar8 = (undefined4 *)puVar30[2];
      bVar35 = puVar8 == puVar16;
      if (bVar35 || puVar8 == (undefined4 *)0x0) break;
LAB_00028398:
      do {
        bVar37 = *(byte *)(puVar8 + 6);
        if (bVar37 < 0x11) {
                    /* WARNING: Could not recover jumptable at 0x000283b8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x57dd + (uint)bVar37 * 4) + unaff_EDI + 0xc669))
                            ();
          return iVar7;
        }
        if ((bVar37 & 8) != 0) {
                    /* WARNING: Subroutine does not return */
          __assert_fail((char *)(unaff_EDI + 0x5ac9),(char *)(unaff_EDI + 0x503d),0x5cc,
                        (char *)(unaff_EDI + 0x5895));
        }
        *(undefined4 *)(local_b0[3] + puVar8[7] * 4) = *(undefined4 *)(puVar8[4] + 0x1c);
        puVar16 = (undefined4 *)puVar8[1];
        puVar13 = puVar8;
        puVar8 = puVar16;
      } while (puVar16 != (undefined4 *)0x0);
    }
  }
  bVar36 = false;
  iVar19 = 0;
  do {
    if (local_b0[2] == iVar19) goto LAB_000284fa;
LAB_000284dd:
    while( true ) {
      iVar20 = iVar19 * 0xc;
      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) goto code_r0x000284f2;
      iVar7 = FUN_0001fb10(1);
      if (iVar7 != 0) goto LAB_00028335;
      iVar19 = iVar19 + 1;
      if (*(int *)(local_b0[6] + 4 + iVar20) != 0) break;
      free(local_78);
      bVar36 = bVar35 || puVar8 == (undefined4 *)0x0;
      if (local_b0[2] == iVar19) goto LAB_00028505;
    }
  } while( true );
code_r0x000284f2:
  iVar19 = iVar19 + 1;
  if (local_b0[2] == iVar19) {
LAB_000284fa:
    if (!bVar36) {
      if (((((*(byte *)(piVar3 + 7) & 0x10) != 0) || (piVar3[6] == 0)) ||
          ((*(byte *)(local_b0 + 0x16) & 1) == 0)) && (local_b0[0x13] == 0)) goto LAB_00028860;
      pvVar9 = malloc(iVar19 * 0xc);
      local_b0[7] = (int)pvVar9;
      if (pvVar9 != (void *)0x0) {
        uVar31 = 0;
        if (iVar19 != 0) goto LAB_0002875b;
        goto LAB_00028860;
      }
      local_88 = 0xc;
      local_b0 = (int *)*piVar3;
      goto LAB_00027c60;
    }
LAB_00028505:
    iVar19 = 0;
    bVar36 = false;
  }
  goto LAB_000284dd;
LAB_00028330:
  iVar7 = 0xc;
LAB_00028335:
  local_b0 = (int *)*piVar3;
  local_88 = iVar7;
LAB_00027c60:
  puVar8 = (undefined4 *)local_b0[0xe];
  while (puVar8 != (undefined4 *)0x0) {
    puVar16 = (undefined4 *)*puVar8;
    free(puVar8);
    puVar8 = puVar16;
  }
  local_b0[0xe] = 0;
  local_b0[0x10] = 0x1f;
  local_b0[0xd] = 0;
  free((void *)local_b0[4]);
  local_b0[4] = 0;
  free(local_6c);
  free(local_68);
  if (local_29 != '\0') {
    free(local_70);
  }
  goto LAB_000282d8;
LAB_0002897d:
  do {
    uVar23 = uVar31 + uVar18 >> 1;
    if (iVar19 <= *(int *)((int)local_78 + uVar23 * 4)) {
      if (uVar23 <= uVar18) break;
      uVar32 = uVar18 + uVar23 >> 1;
      iVar20 = *(int *)((int)local_78 + uVar32 * 4);
      uVar31 = uVar23;
      uVar23 = uVar32;
      while (iVar19 <= iVar20) {
        if (uVar23 <= uVar18) goto LAB_000289b4;
        uVar32 = uVar18 + uVar23 >> 1;
        uVar31 = uVar23;
        uVar23 = uVar32;
        iVar20 = *(int *)((int)local_78 + uVar32 * 4);
      }
    }
    uVar18 = uVar23 + 1;
  } while (uVar18 < uVar31);
LAB_000289b4:
  if (*(int *)((int)local_78 + uVar18 * 4) == iVar19) {
LAB_00028908:
    iVar7 = iVar7 + 1;
    iVar19 = local_7c;
    if (local_7c <= iVar7) goto LAB_000289f2;
    goto LAB_00028917;
  }
  iVar7 = FUN_00018fe0(&local_80,__ptr[6] + iVar19 * 0xc);
  if (iVar7 != 0) goto LAB_00028a39;
  iVar7 = 1;
  iVar19 = local_7c;
  if (local_7c < 2) goto LAB_000289f2;
  goto LAB_00028917;
LAB_0002875b:
  while( true ) {
    puVar8 = (undefined4 *)((int)pvVar9 + uVar31 * 0xc);
    *puVar8 = 0;
    puVar8[1] = 0;
    puVar8[2] = 0;
    uVar23 = local_b0[2];
    if (uVar23 <= uVar31 + 1) break;
    pvVar9 = (void *)local_b0[7];
    uVar31 = uVar31 + 1;
  }
  if (uVar23 != 0) {
    local_9c = 0;
    local_b0 = (int *)local_b0[6];
    do {
      iVar19 = (int)local_b0 + local_9c * 0xc;
      iVar7 = *(int *)(iVar19 + 8);
      if (0 < *(int *)(iVar19 + 4)) {
        iVar19 = 0;
        do {
          piVar21 = (int *)(piVar28[7] + *(int *)(iVar7 + iVar19 * 4) * 0xc);
          iVar20 = piVar21[1];
          pvVar9 = (void *)piVar21[2];
          if (*piVar21 == iVar20) {
            *piVar21 = (iVar20 + 1) * 2;
            pvVar9 = realloc(pvVar9,(iVar20 + 1) * 8);
            if (pvVar9 == (void *)0x0) goto LAB_00028330;
            local_b0 = (int *)piVar28[6];
            iVar20 = piVar21[1];
            piVar21[2] = (int)pvVar9;
          }
          iVar19 = iVar19 + 1;
          piVar21[1] = iVar20 + 1;
          *(uint *)((int)pvVar9 + iVar20 * 4) = local_9c;
        } while (iVar19 < *(int *)((int)local_b0 + 4 + local_9c * 0xc));
        uVar23 = piVar28[2];
      }
      local_9c = local_9c + 1;
    } while (local_9c < uVar23);
  }
LAB_00028860:
  local_88 = 0;
  if (((*(byte *)(__ptr + 0x16) >> 2 & uVar18 == 0) != 0) && (piVar3[5] == 0)) {
    if (__ptr[2] != 0) {
      if (0xc < *(byte *)(*__ptr + 4)) {
                    /* WARNING: Subroutine does not return */
        abort();
      }
                    /* WARNING: Could not recover jumptable at 0x00028b91. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      iVar7 = (*(code *)(*(int *)(unaff_EDI + 0x5821 + (uint)*(byte *)(*__ptr + 4) * 4) +
                        unaff_EDI + 0xc669))();
      return iVar7;
    }
    __ptr[0x17] = 1;
    *(byte *)(__ptr + 0x16) = (0 < __ptr[0x13]) * '\x02' | *(byte *)(__ptr + 0x16) & 0xf9;
  }
  iVar7 = *(int *)(*(int *)(__ptr[0xd] + 0xc) + 0x1c);
  __ptr[0x12] = iVar7;
  iVar7 = __ptr[6] + iVar7 * 0xc;
  iVar19 = *(int *)(iVar7 + 4);
  if (iVar19 < 1) {
    local_80 = 0;
    local_7c = 0;
    local_78 = (void *)0x0;
    local_84 = 0;
LAB_000289f2:
    iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,0);
    __ptr[9] = iVar19;
    iVar7 = local_84;
    if (iVar19 != 0) {
      if (*(char *)(iVar19 + 0x34) < '\0') {
        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,1);
        __ptr[10] = iVar7;
        iVar7 = FUN_0001c950(&local_84,__ptr,&local_80,2);
        __ptr[0xb] = iVar7;
        iVar19 = FUN_0001c950(&local_84,__ptr,&local_80,6);
        __ptr[0xc] = iVar19;
        iVar7 = local_84;
        if (((__ptr[10] == 0) || (__ptr[0xb] == 0)) || (iVar19 == 0)) goto LAB_00028a39;
      }
      else {
        __ptr[0xc] = iVar19;
        __ptr[0xb] = iVar19;
        __ptr[10] = iVar19;
      }
      free(local_78);
      iVar7 = 0;
    }
  }
  else {
    local_80 = iVar19;
    local_7c = iVar19;
    local_78 = malloc(iVar19 * 4);
    if (local_78 != (void *)0x0) {
      memcpy(local_78,*(void **)(iVar7 + 8),iVar19 * 4);
      local_84 = 0;
      if (0 < __ptr[0x13]) {
        iVar7 = 0;
LAB_00028917:
        iVar20 = *(int *)((int)local_78 + iVar7 * 4);
        piVar28 = (int *)(*__ptr + iVar20 * 8);
        if ((char)piVar28[1] == '\x04') {
          iVar26 = 0;
          do {
            piVar21 = (int *)(*__ptr + *(int *)((int)local_78 + iVar26 * 4) * 8);
            if (((char)piVar21[1] == '\t') && (*piVar21 == *piVar28)) {
              uVar31 = iVar19 - 1;
              uVar18 = 0;
              iVar19 = **(int **)(__ptr[5] + iVar20 * 0xc + 8);
              if (uVar31 == 0) goto LAB_000289b4;
              goto LAB_0002897d;
            }
            iVar26 = iVar26 + 1;
          } while (iVar19 != iVar26);
        }
        goto LAB_00028908;
      }
      goto LAB_000289f2;
    }
    iVar7 = 0xc;
  }
LAB_00028a39:
  iVar19 = *piVar3;
  puVar8 = *(undefined4 **)(iVar19 + 0x38);
  local_88 = iVar7;
  while (puVar8 != (undefined4 *)0x0) {
    puVar16 = (undefined4 *)*puVar8;
    free(puVar8);
    puVar8 = puVar16;
  }
  *(undefined4 *)(iVar19 + 0x38) = 0;
  *(undefined4 *)(iVar19 + 0x40) = 0x1f;
  *(undefined4 *)(iVar19 + 0x34) = 0;
  free(*(void **)(iVar19 + 0x10));
  *(undefined4 *)(iVar19 + 0x10) = 0;
  free(local_6c);
  free(local_68);
  if (local_29 != '\0') {
    free(local_70);
  }
  iVar7 = local_88;
  if (local_88 == 0) goto LAB_000282f4;
LAB_000282d8:
  FUN_0001c000();
  *piVar3 = 0;
  piVar3[1] = 0;
  iVar7 = local_88;
LAB_000282f4:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0002a720();
  }
  return iVar7;
}

