
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

state_num build_state(state_num s,dfa *d,uchar uc)

{
  uint *puVar1;
  char cVar2;
  byte bVar3;
  ushort uVar4;
  long lVar5;
  undefined8 uVar6;
  ulong uVar7;
  position p;
  size_t *psVar8;
  ptrdiff_t pVar9;
  ptrdiff_t pVar10;
  position *p_00;
  long lVar11;
  ulong uVar12;
  position *ppVar13;
  ulong uVar14;
  position *ppVar15;
  state_num sVar16;
  state_num sVar17;
  state_num sVar18;
  charclass_word cVar19;
  state_num *psVar20;
  state_num **ppsVar21;
  byte bVar22;
  uint uVar23;
  uint uVar24;
  wchar_t wVar25;
  size_t sVar26;
  uint uVar27;
  state_num **ppsVar28;
  position_set *ppVar29;
  long lVar30;
  dfa_state *pdVar31;
  charclass_word cVar32;
  long lVar33;
  state_num sVar34;
  size_t n;
  charclass_word cVar35;
  ulong uVar36;
  position_set *ppVar37;
  ulong uVar38;
  uint uVar39;
  long lVar40;
  long in_FS_OFFSET;
  uint local_118;
  uint uStack_114;
  uint local_110;
  uint uStack_10c;
  ulong local_100;
  dfa_state *local_f8;
  state_num *local_e0;
  position_set group;
  position_set tmp;
  charclass label;
  charclass matches;
  
  lVar5 = *(long *)(in_FS_OFFSET + 0x28);
  ppsVar21 = d->trans;
  ppsVar28 = ppsVar21;
  if (d->states[s].constraint != 0) {
    ppsVar28 = d->fails;
  }
  local_e0 = ppsVar28[s];
  if (local_e0 == (state_num *)0x0) {
    if (d->trcount < L'Ѐ') {
      wVar25 = d->trcount + L'\x01';
    }
    else {
      lVar33 = (long)d->min_trcount;
      if (lVar33 < d->tralloc) {
        do {
          free(ppsVar21[lVar33]);
          free(d->fails[lVar33]);
          d->fails[lVar33] = (state_num *)0x0;
          ppsVar21 = d->trans;
          ppsVar21[lVar33] = (state_num *)0x0;
          lVar33 = lVar33 + 1;
        } while (lVar33 < d->tralloc);
      }
      wVar25 = L'\x01';
    }
    d->trcount = wVar25;
    local_e0 = (state_num *)xmalloc(0x800);
    sVar16 = _UNK_00128298;
    sVar34 = _DAT_00128290;
    ppsVar28[s] = local_e0;
    psVar20 = local_e0;
    do {
      *psVar20 = sVar34;
      psVar20[1] = sVar16;
      psVar20 = psVar20 + 2;
    } while (local_e0 + 0x100 != psVar20);
  }
  d->success[s] = '\0';
  bVar22 = d->states[s].context;
  uVar4 = d->states[s].constraint;
  uVar27 = (uint)uVar4;
  if (((int)uVar27 >> 6 & (uint)bVar22 & 7) != 0) {
    d->success[s] = d->success[s] | 4;
    bVar22 = d->states[s].context;
    uVar4 = d->states[s].constraint;
    uVar27 = (uint)uVar4;
  }
  uVar23 = (uint)bVar22;
  if (((int)(uint)uVar4 >> 3 & uVar23 & 7) != 0) {
    d->success[s] = d->success[s] | 2;
    uVar23 = (uint)d->states[s].context;
    uVar27 = (uint)d->states[s].constraint;
  }
  if ((uVar27 & 7 & uVar23) != 0) {
    d->success[s] = d->success[s] | 1;
  }
  uVar14 = d->nleaves;
  if (((long)(uVar14 << 4) < 0) || (uVar14 >> 0x3c != 0)) {
LAB_00114c1c:
                    /* WARNING: Subroutine does not return */
    xalloc_die();
  }
  p_00 = (position *)xmalloc(uVar14 << 4);
  local_f8 = d->states + s;
  uVar36 = (local_f8->elems).nelem;
  if (uVar36 == 0) {
    lVar33 = 0;
  }
  else {
    local_100 = 0;
    ppVar15 = (local_f8->elems).elems;
    lVar33 = 0;
    ppVar37 = d->follows;
    do {
      uVar38 = 0;
      ppVar29 = ppVar37 + ppVar15[local_100].index;
      if (ppVar29->nelem != 0) {
        do {
          uVar36 = ppVar29->elems[uVar38].index;
          uVar27 = ppVar29->elems[uVar38].constraint;
          ppVar13 = p_00;
          if (lVar33 == 0) {
            if ((long)uVar14 < 1) {
              lVar40 = 0;
              goto LAB_00114026;
            }
          }
          else {
            lVar40 = 0;
            lVar30 = lVar33;
            do {
              while( true ) {
                lVar11 = lVar30 + lVar40 >> 1;
                uVar12 = p_00[lVar11].index;
                if (uVar12 <= uVar36 && uVar36 != uVar12) break;
                if (uVar36 == uVar12) {
                  puVar1 = &p_00[lVar11].constraint;
                  *puVar1 = *puVar1 | uVar27;
                  goto LAB_00114119;
                }
                lVar30 = lVar11;
                if (lVar11 <= lVar40) goto LAB_0011401d;
              }
              lVar40 = lVar11 + 1;
            } while (lVar40 < lVar30);
LAB_0011401d:
            uVar12 = uVar14;
            if ((long)uVar14 <= lVar33) {
LAB_00114026:
              uVar12 = ((long)uVar14 >> 1) + uVar14;
              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||
                 (sVar26 = uVar12 * 0x10,
                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {
                sVar26 = 0x7ffffffffffffff0;
                uVar12 = 0x7ffffffffffffff;
              }
              else if ((long)sVar26 < 0x80) {
                uVar12 = 8;
                sVar26 = 0x80;
              }
              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&
                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||
                  (sVar26 = uVar12 * 0x10,
                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))
              goto LAB_00114c1c;
              ppVar13 = (position *)xrealloc(p_00,sVar26);
              ppVar37 = d->follows;
              local_f8 = d->states + s;
              ppVar15 = (local_f8->elems).elems;
            }
            p_00 = ppVar13 + lVar40;
            uVar14 = uVar12;
            if (lVar40 < lVar33) {
              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);
            }
          }
          p_00->index = uVar36;
          lVar33 = lVar33 + 1;
          p_00->constraint = uVar27;
          p_00 = ppVar13;
LAB_00114119:
          uVar38 = uVar38 + 1;
          ppVar29 = ppVar37 + ppVar15[local_100].index;
        } while (uVar38 < (ulong)ppVar29->nelem);
        uVar36 = (local_f8->elems).nelem;
      }
      local_100 = local_100 + 1;
    } while (local_100 < uVar36);
  }
  uVar14 = d->nleaves;
  if (((long)(uVar14 << 4) < 0) || (uVar14 >> 0x3c != 0)) goto LAB_00114c1c;
  group.elems = (position *)xmalloc(uVar14 << 4);
  group.nelem = 0;
  label.w[0] = 0xffffffffffffffff;
  label.w[1] = 0xffffffffffffffff;
  label.w[2]._0_4_ = 0xffffffff;
  label.w[2]._4_4_ = 0xffffffff;
  label.w[3]._0_4_ = 0xffffffff;
  label.w[3]._4_4_ = 0xffffffff;
  group.alloc = uVar14;
  if (lVar33 != 0) {
    lVar40 = 0;
    uVar27 = (uint)(uc >> 6);
    uVar14 = 1L << (uc & 0x3f);
    ppVar15 = p_00;
    do {
      while( true ) {
        sVar26 = ppVar15->index;
        uVar6 = *(undefined8 *)&ppVar15->constraint;
        p = *ppVar15;
        uVar23 = ppVar15->constraint;
        uVar36 = d->tokens[sVar26];
        local_110 = (uint)uVar14;
        uStack_10c = (uint)(uVar14 >> 0x20);
        if (uVar36 < 0x100) break;
        if ((long)uVar36 < 0x114) {
          if (uVar36 != 0x10a) goto LAB_0011435a;
          pdVar31 = d->states + s;
          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[d->canychar].w;
          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[d->canychar].w + 2);
          bVar22 = (byte)(matches.w[uVar27] >> (uc & 0x3f)) & 1;
          if ((pdVar31->context & uVar23 & 7) != 0) {
            if ((pdVar31->mbps).nelem == 0) {
              ppVar13 = (position *)xmalloc(0x10);
              pVar10 = _UNK_001282a8;
              pVar9 = _DAT_001282a0;
              (pdVar31->mbps).elems = ppVar13;
              (pdVar31->mbps).nelem = pVar9;
              (pdVar31->mbps).alloc = pVar10;
              pdVar31 = d->states + s;
            }
            insert(p,&pdVar31->mbps);
          }
          cVar19 = matches.w[0];
          cVar32 = matches.w[2];
          cVar35 = matches.w[1];
          if (uVar23 != 0x1ff) goto LAB_0011485e;
LAB_0011445b:
          if (bVar22 != 0) goto LAB_00114267;
        }
        else {
          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w;
          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2);
          if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011423a;
LAB_0011482f:
          bVar22 = 0;
          cVar19 = matches.w[0];
          cVar32 = matches.w[2];
          cVar35 = matches.w[1];
          if (uVar23 != 0x1ff) {
LAB_0011485e:
            bVar3 = d->states[s].context;
            cVar19 = matches.w[0];
            cVar32 = matches.w[2];
            cVar35 = matches.w[1];
            uVar36 = matches.w[3];
            if (((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0) {
              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];
              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];
              matches.w[1] = cVar35;
              matches.w[0] = cVar19;
              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];
              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];
              matches.w[3] = uVar36;
              matches.w[2] = cVar32;
            }
            if (((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0) {
              cVar19 = cVar19 & ~(d->syntax).letters.w[0];
              cVar35 = cVar35 & ~(d->syntax).letters.w[1];
              matches.w[1] = cVar35;
              matches.w[0] = cVar19;
              cVar32 = cVar32 & ~(d->syntax).letters.w[2];
              uVar36 = uVar36 & ~(d->syntax).letters.w[3];
              matches.w[3] = uVar36;
              matches.w[2] = cVar32;
            }
            if ((uVar23 & bVar3 & 7) == 0) {
              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);
              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);
              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);
              matches.w[1] = cVar35;
              matches.w[0] = cVar19;
              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);
              matches.w[3] = uVar36;
              matches.w[2] = cVar32;
            }
            if (((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0) goto LAB_0011435a;
            if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011445b;
          }
        }
        local_118 = (uint)cVar32;
        uStack_114 = (uint)(cVar32 >> 0x20);
        lVar40 = lVar40 + 1;
        ppVar15 = ppVar15 + 1;
        label.w[2]._0_4_ = ~local_118 & (uint)label.w[2];
        label.w[2]._4_4_ = ~uStack_114 & label.w[2]._4_4_;
        label.w[3]._0_4_ = ~local_110 & (uint)label.w[3];
        label.w[3]._4_4_ = ~uStack_10c & label.w[3]._4_4_;
        label.w[0] = ~cVar19 & label.w[0];
        label.w[1] = ~cVar35 & label.w[1];
        if (lVar40 == lVar33) goto LAB_001144c5;
      }
      matches.w[0] = 0;
      matches.w[1] = 0;
      matches.w[2] = 0;
      matches.w[3] = 0;
      matches.w[uVar36 >> 6 & 0x3ffffff] = 1L << ((byte)uVar36 & 0x3f);
      if (uVar36 != uc) goto LAB_0011482f;
LAB_0011423a:
      cVar19 = matches.w[0];
      cVar32 = matches.w[2];
      cVar35 = matches.w[1];
      if (uVar23 != 0x1ff) {
        bVar22 = 1;
        goto LAB_0011485e;
      }
LAB_00114267:
      pVar9 = group.alloc;
      local_118 = (uint)cVar32;
      uStack_114 = (uint)(cVar32 >> 0x20);
      label.w[2]._0_4_ = local_118 & (uint)label.w[2];
      label.w[2]._4_4_ = uStack_114 & label.w[2]._4_4_;
      label.w[3]._0_4_ = local_110 & (uint)label.w[3];
      label.w[3]._4_4_ = uStack_10c & label.w[3]._4_4_;
      label.w[0] = cVar19 & label.w[0];
      label.w[1] = cVar35 & label.w[1];
      if (group.alloc <= group.nelem) {
        lVar30 = (group.alloc >> 1) + group.alloc;
        if ((SCARRY8(group.alloc >> 1,group.alloc)) ||
           (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))) {
          lVar30 = 0x7ffffffffffffff;
          n = 0x7ffffffffffffff0;
        }
        else if ((long)n < 0x80) {
          n = 0x80;
          lVar30 = 8;
        }
        if (group.elems == (position *)0x0) {
          group.alloc = 0;
        }
        if ((lVar30 == pVar9 || lVar30 - pVar9 < 0) &&
           ((lVar30 = pVar9 + 1, SCARRY8(pVar9,1) ||
            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)))))
        goto LAB_00114c1c;
        group.elems = (position *)xrealloc(group.elems,n);
        group.alloc = lVar30;
      }
      group.elems[group.nelem].index = sVar26;
      group.elems[group.nelem].constraint = (uint)uVar6;
      group.nelem = group.nelem + 1;
LAB_0011435a:
      lVar40 = lVar40 + 1;
      ppVar15 = ppVar15 + 1;
    } while (lVar40 != lVar33);
  }
LAB_001144c5:
  uVar14 = d->nleaves;
  if ((long)(uVar14 << 4) < 0 || uVar14 >> 0x3c != 0) goto LAB_00114c1c;
  tmp.elems = (position *)xmalloc(uVar14 << 4);
  tmp.nelem = 0;
  tmp.alloc = uVar14;
  if (group.nelem < 1) {
    if (d->searchflag == false) {
      sVar16 = -1;
      sVar34 = -1;
      sVar17 = sVar16;
    }
    else {
      sVar34 = d->initstate_notbol;
      sVar16 = 0;
      sVar17 = (long)(d->min_trcount + L'\xffffffff');
    }
    goto LAB_001146d6;
  }
  if (d->searchflag != false) {
    if ((d->localeinfo).multibyte != false) {
      lVar33 = 0;
      do {
        lVar40 = lVar33 + 1;
        if ((d->multibyte_prop[group.elems[lVar33].index] & 1U) == 0) goto LAB_00114536;
        lVar33 = lVar40;
      } while (lVar40 != group.nelem);
    }
    merge_constrained(&d->states->elems,(position_set *)&(d->states->elems).nelem,(uint)&group,
                      (position_set *)&group.nelem,(position_set *)0xffffffff,&tmp);
    copy((EVP_PKEY_CTX *)&tmp,(EVP_PKEY_CTX *)&tmp.nelem);
  }
LAB_00114536:
  uVar14 = (d->syntax).newline.w[0];
  uVar36 = (d->syntax).letters.w[0];
  uVar27 = (uint)((label.w[0] & uVar14) != 0) << 2;
  if ((label.w[0] & uVar36) != 0) {
    uVar27 = uVar27 | 2;
  }
  uVar38 = (d->syntax).newline.w[1];
  if ((~(uVar14 | uVar36) & label.w[0]) != 0) {
    uVar27 = uVar27 | 1;
  }
  if ((label.w[1] & uVar38) != 0) {
    uVar27 = uVar27 | 4;
  }
  uVar14 = (d->syntax).letters.w[1];
  if ((label.w[1] & uVar14) != 0) {
    uVar27 = uVar27 | 2;
  }
  uVar36 = CONCAT44(label.w[2]._4_4_,(uint)label.w[2]);
  if ((~(uVar38 | uVar14) & label.w[1]) != 0) {
    uVar27 = uVar27 | 1;
  }
  uVar14 = (d->syntax).newline.w[2];
  if ((uVar14 & uVar36) != 0) {
    uVar27 = uVar27 | 4;
  }
  uVar38 = (d->syntax).letters.w[2];
  if ((uVar38 & uVar36) != 0) {
    uVar27 = uVar27 | 2;
  }
  uVar7 = CONCAT44(label.w[3]._4_4_,(uint)label.w[3]);
  uVar12 = (d->syntax).newline.w[3];
  if ((~(uVar38 | uVar14) & uVar36) != 0) {
    uVar27 = uVar27 | 1;
  }
  if ((uVar12 & uVar7) != 0) {
    uVar27 = uVar27 | 4;
  }
  uVar14 = (d->syntax).letters.w[3];
  if ((uVar7 & uVar14) != 0) {
    uVar27 = uVar27 | 2;
  }
  if ((~(uVar12 | uVar14) & uVar7) == 0) {
    if (group.nelem != 0) goto LAB_0011464f;
    if (uVar27 != 0) goto LAB_00114c0f;
    sVar16 = -1;
    sVar17 = -1;
    sVar34 = sVar16;
  }
  else {
    uVar27 = uVar27 | 1;
    if (group.nelem == 0) {
LAB_00114c0f:
      uVar39 = 0;
      uVar23 = 0;
      wVar25 = L'\a';
LAB_00114bf3:
      sVar34 = state_index(d,&group,wVar25);
    }
    else {
LAB_0011464f:
      uVar24 = 0;
      ppVar15 = group.elems;
      do {
        psVar8 = &ppVar15->index;
        ppVar15 = ppVar15 + 1;
        uVar24 = uVar24 | d->separates[*psVar8];
      } while (group.elems + group.nelem != ppVar15);
      sVar34 = -1;
      uVar39 = uVar24 & uVar27 & 2;
      uVar23 = uVar24 & uVar27 & 4;
      if ((~uVar24 & uVar27) != 0) {
        wVar25 = uVar24 ^ 7;
        goto LAB_00114bf3;
      }
    }
    sVar16 = sVar34;
    if (uVar23 != 0) {
      sVar16 = state_index(d,&group,L'\x04');
    }
    sVar17 = sVar34;
    if (uVar39 != 0) {
      sVar17 = state_index(d,&group,L'\x02');
    }
  }
  realloc_trans_if_necessary(d);
LAB_001146d6:
  uVar14 = 0;
  do {
    while ((label.w[uVar14 >> 6 & 0x3ffffff] >> (uVar14 & 0x3f) & 1) == 0) {
LAB_001146ed:
      uVar14 = uVar14 + 1;
      if (uVar14 == 0x100) goto LAB_00114728;
    }
    cVar2 = (d->syntax).sbit[uVar14];
    if (cVar2 != '\x02') {
      sVar18 = sVar16;
      if (cVar2 != '\x04') {
        sVar18 = sVar34;
      }
      local_e0[uVar14] = sVar18;
      goto LAB_001146ed;
    }
    local_e0[uVar14] = sVar17;
    uVar14 = uVar14 + 1;
  } while (uVar14 != 0x100);
LAB_00114728:
  free(group.elems);
  free(p_00);
  free(tmp.elems);
  bVar22 = (d->syntax).eolbyte;
  if ((label.w[bVar22 >> 6] >> (bVar22 & 0x3f) & 1) != 0) {
    d->newlines[s] = local_e0[bVar22];
    local_e0[(d->syntax).eolbyte] = -1;
  }
  if (lVar5 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return local_e0[uc];
}



/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_00113e20(long param_1,long param_2,byte param_3)

{
  char cVar1;
  byte bVar2;
  ushort uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  ulong uVar6;
  long lVar7;
  long lVar8;
  byte *pbVar9;
  ulong *__src;
  ulong *puVar10;
  long lVar11;
  ulong uVar12;
  ulong uVar13;
  undefined1 (*pauVar14) [16];
  long *plVar15;
  undefined8 uVar16;
  undefined8 *puVar17;
  byte bVar18;
  uint uVar19;
  ulong *puVar20;
  long lVar21;
  ulong uVar22;
  uint uVar23;
  int iVar24;
  long lVar25;
  long lVar26;
  ulong uVar27;
  long lVar28;
  ulong uVar29;
  ulong uVar30;
  uint uVar31;
  ulong uVar32;
  uint uVar33;
  long in_FS_OFFSET;
  undefined1 auVar34 [16];
  undefined1 auVar35 [16];
  ulong local_100;
  long local_f8;
  undefined8 *local_e0;
  long *local_c8;
  long local_c0;
  ulong local_b8;
  void *local_a8;
  undefined8 local_a0;
  ulong local_98;
  undefined1 local_88 [16];
  undefined1 local_78 [16];
  undefined1 local_68 [16];
  undefined1 local_58 [16];
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  lVar7 = param_1 * 0x50;
  lVar8 = *(long *)(param_2 + 0x3a0);
  lVar21 = lVar8;
  if (*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0) {
    lVar21 = *(long *)(param_2 + 0x3a8);
  }
  plVar15 = (long *)(lVar21 + param_1 * 8);
  local_e0 = (undefined8 *)*plVar15;
  if (local_e0 == (undefined8 *)0x0) {
    if (*(int *)(param_2 + 0x398) < 0x400) {
      iVar24 = *(int *)(param_2 + 0x398) + 1;
    }
    else {
      lVar21 = (long)*(int *)(param_2 + 0x39c);
      if (lVar21 < *(long *)(param_2 + 0x390)) {
        do {
          free(*(void **)(lVar8 + lVar21 * 8));
          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));
          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;
          lVar8 = *(long *)(param_2 + 0x3a0);
          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;
          lVar21 = lVar21 + 1;
        } while (lVar21 < *(long *)(param_2 + 0x390));
      }
      iVar24 = 1;
    }
    *(int *)(param_2 + 0x398) = iVar24;
    local_e0 = (undefined8 *)FUN_00120ce0(0x800);
    uVar5 = _UNK_00128298;
    uVar4 = _DAT_00128290;
    *plVar15 = (long)local_e0;
    puVar17 = local_e0;
    do {
      *puVar17 = uVar4;
      puVar17[1] = uVar5;
      puVar17 = puVar17 + 2;
    } while (local_e0 + 0x100 != puVar17);
  }
  *(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1) = 0;
  lVar8 = *(long *)(param_2 + 0x358) + lVar7;
  bVar18 = *(byte *)(lVar8 + 0x20);
  uVar3 = *(ushort *)(lVar8 + 0x22);
  uVar23 = (uint)uVar3;
  if (((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0) {
    pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);
    *pbVar9 = *pbVar9 | 4;
    lVar8 = *(long *)(param_2 + 0x358) + lVar7;
    bVar18 = *(byte *)(lVar8 + 0x20);
    uVar3 = *(ushort *)(lVar8 + 0x22);
    uVar23 = (uint)uVar3;
  }
  if (((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0) {
    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));
    *pbVar9 = *pbVar9 | 2;
    lVar8 = lVar7 + *(long *)(param_2 + 0x358);
    bVar18 = *(byte *)(lVar8 + 0x20);
    uVar23 = (uint)*(ushort *)(lVar8 + 0x22);
  }
  if ((uVar23 & 7 & (uint)bVar18) != 0) {
    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));
    *pbVar9 = *pbVar9 | 1;
  }
  uVar13 = *(ulong *)(param_2 + 0x300);
  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) {
LAB_00114c1c:
                    /* WARNING: Subroutine does not return */
    FUN_00120e70();
  }
  __src = (ulong *)FUN_00120ce0();
  local_f8 = lVar7 + *(long *)(param_2 + 0x358);
  uVar22 = *(ulong *)(local_f8 + 0x10);
  if (uVar22 == 0) {
    lVar8 = 0;
  }
  else {
    local_100 = 0;
    lVar26 = *(long *)(local_f8 + 8);
    lVar8 = 0;
    lVar21 = *(long *)(param_2 + 0x370);
    do {
      uVar32 = 0;
      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);
      if (plVar15[1] != 0) {
        do {
          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);
          uVar22 = *puVar10;
          uVar23 = (uint)puVar10[1];
          puVar10 = __src;
          if (lVar8 == 0) {
            if ((long)uVar13 < 1) {
              lVar25 = 0;
              goto LAB_00114026;
            }
          }
          else {
            lVar25 = 0;
            lVar28 = lVar8;
            do {
              while( true ) {
                lVar11 = lVar28 + lVar25 >> 1;
                puVar20 = __src + lVar11 * 2;
                uVar12 = *puVar20;
                if (uVar12 <= uVar22 && uVar22 != uVar12) break;
                if (uVar22 == uVar12) {
                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;
                  goto LAB_00114119;
                }
                lVar28 = lVar11;
                if (lVar11 <= lVar25) goto LAB_0011401d;
              }
              lVar25 = lVar11 + 1;
            } while (lVar25 < lVar28);
LAB_0011401d:
            uVar12 = uVar13;
            if ((long)uVar13 <= lVar8) {
LAB_00114026:
              uVar12 = ((long)uVar13 >> 1) + uVar13;
              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||
                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))
              {
                lVar21 = 0x7ffffffffffffff0;
                uVar12 = 0x7ffffffffffffff;
              }
              else if (lVar21 < 0x80) {
                uVar12 = 8;
                lVar21 = 0x80;
              }
              if (((long)(uVar12 - uVar13) < 1) &&
                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||
                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))
                  ))) goto LAB_00114c1c;
              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);
              lVar21 = *(long *)(param_2 + 0x370);
              local_f8 = lVar7 + *(long *)(param_2 + 0x358);
              lVar26 = *(long *)(local_f8 + 8);
            }
            __src = puVar10 + lVar25 * 2;
            uVar13 = uVar12;
            if (lVar25 < lVar8) {
              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);
            }
          }
          *__src = uVar22;
          lVar8 = lVar8 + 1;
          *(uint *)(__src + 1) = uVar23;
          __src = puVar10;
LAB_00114119:
          uVar32 = uVar32 + 1;
          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);
        } while (uVar32 < (ulong)plVar15[1]);
        uVar22 = *(ulong *)(local_f8 + 0x10);
      }
      local_100 = local_100 + 1;
    } while (local_100 < uVar22);
  }
  uVar13 = *(ulong *)(param_2 + 0x300);
  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) goto LAB_00114c1c;
  local_c8 = (long *)FUN_00120ce0();
  local_88._8_4_ = 0xffffffff;
  local_88._0_8_ = 0xffffffffffffffff;
  local_88._12_4_ = 0xffffffff;
  local_c0 = 0;
  local_78 = local_88;
  local_b8 = uVar13;
  if (lVar8 != 0) {
    lVar21 = 0;
    uVar23 = (uint)(param_3 >> 6);
    uVar13 = 1L << (param_3 & 0x3f);
    puVar10 = __src;
    do {
      while( true ) {
        uVar22 = *puVar10;
        uVar32 = puVar10[1];
        uVar19 = (uint)puVar10[1];
        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);
        if (uVar12 < 0x100) break;
        if ((long)uVar12 < 0x114) {
          if (uVar12 != 0x10a) goto LAB_0011435a;
          lVar26 = lVar7 + *(long *)(param_2 + 0x358);
          pauVar14 = (undefined1 (*) [16])
                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));
          local_68 = *pauVar14;
          local_58 = pauVar14[1];
          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;
          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {
            if (*(long *)(lVar26 + 0x38) == 0) {
              uVar16 = FUN_00120ce0(0x10);
              uVar5 = _UNK_001282a8;
              uVar4 = _DAT_001282a0;
              *(undefined8 *)(lVar26 + 0x30) = uVar16;
              *(undefined8 *)(lVar26 + 0x38) = uVar4;
              *(undefined8 *)(lVar26 + 0x40) = uVar5;
              lVar26 = lVar7 + *(long *)(param_2 + 0x358);
            }
            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);
          }
          uVar12 = local_68._0_8_;
          uVar27 = local_58._0_8_;
          uVar29 = local_68._8_8_;
          uVar30 = local_58._8_8_;
          if (uVar19 != 0x1ff) goto LAB_0011485e;
LAB_0011445b:
          if (bVar18 != 0) goto LAB_00114267;
        }
        else {
          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);
          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);
          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);
          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;
LAB_0011482f:
          bVar18 = 0;
          uVar12 = local_68._0_8_;
          uVar27 = local_58._0_8_;
          uVar29 = local_68._8_8_;
          uVar30 = local_58._8_8_;
          if (uVar19 != 0x1ff) {
LAB_0011485e:
            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);
            uVar12 = local_68._0_8_;
            uVar27 = local_58._0_8_;
            uVar29 = local_68._8_8_;
            uVar30 = local_58._8_8_;
            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {
              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);
              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);
              local_68._8_8_ = uVar29;
              local_68._0_8_ = uVar12;
              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);
              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);
              local_58._8_8_ = uVar30;
              local_58._0_8_ = uVar27;
            }
            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {
              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);
              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);
              local_68._8_8_ = uVar29;
              local_68._0_8_ = uVar12;
              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);
              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);
              local_58._8_8_ = uVar30;
              local_58._0_8_ = uVar27;
            }
            if ((uVar19 & bVar2 & 7) == 0) {
              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));
              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));
              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));
              local_68._8_8_ = uVar29;
              local_68._0_8_ = uVar12;
              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));
              local_58._8_8_ = uVar30;
              local_58._0_8_ = uVar27;
            }
            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;
            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;
          }
        }
        lVar21 = lVar21 + 1;
        puVar10 = puVar10 + 2;
        auVar35._8_8_ = uVar30;
        auVar35._0_8_ = uVar27;
        local_78 = ~auVar35 & local_78;
        local_88._8_8_ = ~uVar29 & local_88._8_8_;
        local_88._0_8_ = ~uVar12 & local_88._0_8_;
        if (lVar21 == lVar8) goto LAB_001144c5;
      }
      local_68 = (undefined1  [16])0x0;
      local_58 = (undefined1  [16])0x0;
      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);
      if (uVar12 != param_3) goto LAB_0011482f;
LAB_0011423a:
      uVar12 = local_68._0_8_;
      uVar27 = local_58._0_8_;
      uVar29 = local_68._8_8_;
      uVar30 = local_58._8_8_;
      if (uVar19 != 0x1ff) {
        bVar18 = 1;
        goto LAB_0011485e;
      }
LAB_00114267:
      uVar6 = local_b8;
      auVar34._8_8_ = uVar30;
      auVar34._0_8_ = uVar27;
      local_78 = auVar34 & local_78;
      local_88._8_8_ = uVar29 & local_88._8_8_;
      local_88._0_8_ = uVar12 & local_88._0_8_;
      if ((long)local_b8 <= local_c0) {
        uVar12 = ((long)local_b8 >> 1) + local_b8;
        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||
           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {
          uVar12 = 0x7ffffffffffffff;
          lVar26 = 0x7ffffffffffffff0;
        }
        else if (lVar26 < 0x80) {
          lVar26 = 0x80;
          uVar12 = 8;
        }
        if (local_c8 == (long *)0x0) {
          local_b8 = 0;
        }
        if (((long)(uVar12 - uVar6) < 1) &&
           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||
            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))
        goto LAB_00114c1c;
        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);
        local_b8 = uVar12;
      }
      local_c8[local_c0 * 2] = uVar22;
      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;
      local_c0 = local_c0 + 1;
LAB_0011435a:
      lVar21 = lVar21 + 1;
      puVar10 = puVar10 + 2;
    } while (lVar21 != lVar8);
  }
LAB_001144c5:
  uVar13 = *(ulong *)(param_2 + 0x300);
  if ((long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0) goto LAB_00114c1c;
  local_a8 = (void *)FUN_00120ce0();
  local_a0 = 0;
  local_98 = uVar13;
  if (local_c0 < 1) {
    if (*(char *)(param_2 + 0x378) == '\0') {
      lVar21 = -1;
      lVar8 = -1;
      lVar7 = lVar21;
    }
    else {
      lVar8 = *(long *)(param_2 + 0x3c0);
      lVar21 = 0;
      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);
    }
    goto LAB_001146d6;
  }
  if (*(char *)(param_2 + 0x378) != '\0') {
    if (*(char *)(param_2 + 0x3fc) != '\0') {
      lVar8 = 0;
      do {
        lVar21 = lVar8 + 1;
        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)
        goto LAB_00114536;
        lVar8 = lVar21;
      } while (lVar21 != local_c0);
    }
    FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,
                 &local_c0,0xffffffff,&local_a8);
    FUN_00111e00(&local_a8,&local_a0,&local_c8);
  }
LAB_00114536:
  uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2;
  if ((local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0) {
    uVar23 = uVar23 | 2;
  }
  if ((~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0) {
    uVar23 = uVar23 | 1;
  }
  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0) {
    uVar23 = uVar23 | 4;
  }
  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0) {
    uVar23 = uVar23 | 2;
  }
  if ((~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0) {
    uVar23 = uVar23 | 1;
  }
  if ((*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0) {
    uVar23 = uVar23 | 4;
  }
  if ((*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0) {
    uVar23 = uVar23 | 2;
  }
  if ((~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0) {
    uVar23 = uVar23 | 1;
  }
  if ((*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0) {
    uVar23 = uVar23 | 4;
  }
  if ((local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0) {
    uVar23 = uVar23 | 2;
  }
  if ((~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0) {
    if (local_c0 != 0) goto LAB_0011464f;
    if (uVar23 != 0) goto LAB_00114c0f;
    lVar21 = -1;
    lVar7 = -1;
    lVar8 = lVar21;
  }
  else {
    uVar23 = uVar23 | 1;
    if (local_c0 == 0) {
LAB_00114c0f:
      uVar33 = 0;
      uVar31 = 0;
      uVar19 = 7;
LAB_00114bf3:
      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);
    }
    else {
LAB_0011464f:
      uVar19 = 0;
      plVar15 = local_c8;
      do {
        lVar8 = *plVar15;
        plVar15 = plVar15 + 2;
        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);
      } while (local_c8 + local_c0 * 2 != plVar15);
      lVar8 = -1;
      uVar33 = uVar19 & uVar23 & 2;
      uVar31 = uVar19 & uVar23 & 4;
      if ((~uVar19 & uVar23) != 0) {
        uVar19 = uVar19 ^ 7;
        goto LAB_00114bf3;
      }
    }
    lVar21 = lVar8;
    if (uVar31 != 0) {
      lVar21 = FUN_00112550(param_2,&local_c8,4);
    }
    lVar7 = lVar8;
    if (uVar33 != 0) {
      lVar7 = FUN_00112550(param_2,&local_c8,2);
    }
  }
  FUN_00111ef0(param_2);
LAB_001146d6:
  uVar13 = 0;
  do {
    while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {
LAB_001146ed:
      uVar13 = uVar13 + 1;
      if (uVar13 == 0x100) goto LAB_00114728;
    }
    cVar1 = *(char *)(param_2 + 0xc + uVar13);
    if (cVar1 != '\x02') {
      lVar26 = lVar21;
      if (cVar1 != '\x04') {
        lVar26 = lVar8;
      }
      local_e0[uVar13] = lVar26;
      goto LAB_001146ed;
    }
    local_e0[uVar13] = lVar7;
    uVar13 = uVar13 + 1;
  } while (uVar13 != 0x100);
LAB_00114728:
  free(local_c8);
  free(__src);
  free(local_a8);
  bVar18 = *(byte *)(param_2 + 0xb);
  if ((*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0) {
    *(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];
    local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;
  }
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return local_e0[param_3];
}


PUSH R15
MOV R15,RSI
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0xf8
MOV qword ptr [RSP + 0x50],RDI
MOV dword ptr [RSP + 0x5c],EDX
MOV byte ptr [RSP + 0x5b],DL
MOV RDX,qword ptr [RSI + 0x358]
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0xe8],RAX
XOR EAX,EAX
LEA RAX,[RDI + RDI*0x4]
SHL RAX,0x4
MOV RBX,RAX
MOV qword ptr [RSP + 0x38],RAX
MOV RAX,qword ptr [RSI + 0x3a0]
CMP word ptr [RDX + RBX*0x1 + 0x22],0x0
MOV RDX,RAX
CMOVNZ RDX,qword ptr [RSI + 0x3a8]
LEA RBX,[RDX + RDI*0x8]
MOV RDI,qword ptr [RBX]
MOV qword ptr [RSP + 0x48],RDI
TEST RDI,RDI
JZ 0x00114afd
MOV RAX,qword ptr [R15 + 0x3b0]
MOV RBX,qword ptr [RSP + 0x50]
MOV RDI,qword ptr [RSP + 0x38]
MOV byte ptr [RAX + RBX*0x1],0x0
MOV RAX,qword ptr [R15 + 0x358]
ADD RAX,RDI
MOVZX ECX,byte ptr [RAX + 0x20]
MOVZX EAX,word ptr [RAX + 0x22]
MOV ESI,EAX
MOV EDX,EAX
SAR ESI,0x6
AND ESI,ECX
AND ESI,0x7
JZ 0x00113eee
MOV RAX,qword ptr [R15 + 0x3b0]
ADD RAX,RBX
OR byte ptr [RAX],0x4
MOV RAX,qword ptr [R15 + 0x358]
ADD RAX,RDI
MOVZX ECX,byte ptr [RAX + 0x20]
MOVZX EAX,word ptr [RAX + 0x22]
MOV EDX,EAX
SAR EAX,0x3
AND EAX,ECX
TEST AL,0x7
JZ 0x00113f1a
MOV RAX,qword ptr [RSP + 0x50]
ADD RAX,qword ptr [R15 + 0x3b0]
OR byte ptr [RAX],0x2
MOV RAX,qword ptr [RSP + 0x38]
ADD RAX,qword ptr [R15 + 0x358]
MOVZX ECX,byte ptr [RAX + 0x20]
MOVZX EDX,word ptr [RAX + 0x22]
AND EDX,0x7
TEST EDX,ECX
JZ 0x00113f30
MOV RAX,qword ptr [RSP + 0x50]
ADD RAX,qword ptr [R15 + 0x3b0]
OR byte ptr [RAX],0x1
MOV RBP,qword ptr [R15 + 0x300]
MOV RAX,RBP
MOV RDI,RBP
SHR RAX,0x3c
SETNZ AL
SHL RDI,0x4
MOVZX EAX,AL
JS 0x00114c1c
TEST RAX,RAX
JNZ 0x00114c1c
CALL 0x00120ce0
MOV R13,RAX
MOV RAX,qword ptr [RSP + 0x38]
ADD RAX,qword ptr [R15 + 0x358]
MOV RCX,qword ptr [RAX + 0x10]
MOV qword ptr [RSP + 0x30],RAX
TEST RCX,RCX
JZ 0x00114c08
MOV qword ptr [RSP + 0x28],0x0
MOV R10,qword ptr [RAX + 0x8]
XOR EBX,EBX
MOV qword ptr [RSP + 0x40],R15
MOV R9,qword ptr [R15 + 0x370]
NOP dword ptr [RAX + RAX*0x1]
MOV R15,qword ptr [RSP + 0x28]
XOR R12D,R12D
SHL R15,0x4
MOV RAX,qword ptr [R10 + R15*0x1]
LEA RAX,[RAX + RAX*0x2]
LEA RDX,[R9 + RAX*0x8]
CMP qword ptr [RDX + 0x8],0x0
JZ 0x0011413c
NOP dword ptr [RAX + RAX*0x1]
MOV RAX,R12
SHL RAX,0x4
ADD RAX,qword ptr [RDX]
MOV R14,qword ptr [RAX]
MOV R8D,dword ptr [RAX + 0x8]
TEST RBX,RBX
JZ 0x001147e0
MOV RSI,RBX
XOR EDX,EDX
JMP 0x00113ff9
LEA RDX,[RAX + 0x1]
CMP RDX,RSI
JGE 0x0011401d
LEA RAX,[RSI + RDX*0x1]
SAR RAX,0x1
MOV RCX,RAX
SHL RCX,0x4
ADD RCX,R13
CMP R14,qword ptr [RCX]
JA 0x00113ff0
JZ 0x001147c8
MOV RSI,RAX
CMP RDX,RSI
JL 0x00113ff9
CMP RBX,RBP
JL 0x001140bb
MOV RAX,RBP
SAR RAX,0x1
ADD RAX,RBP
JO 0x00114c21
IMUL RCX,RAX,0x10
JO 0x00114c21
CMP RCX,0x7f
MOV ESI,0x80
CMOVG RSI,RCX
MOV ECX,0x8
CMOVLE RAX,RCX
MOV RCX,RAX
SUB RCX,RBP
TEST RCX,RCX
JG 0x001147d8
ADD RBP,0x1
JO 0x00114c1c
IMUL RSI,RBP,0x10
JO 0x00114c1c
MOV RDI,R13
MOV qword ptr [RSP + 0x10],RDX
MOV dword ptr [RSP + 0x8],R8D
CALL 0x00120d00
MOV RDX,qword ptr [RSP + 0x10]
MOV R8D,dword ptr [RSP + 0x8]
MOV R13,RAX
MOV RAX,qword ptr [RSP + 0x40]
MOV RDI,RAX
MOV R9,qword ptr [RAX + 0x370]
MOV RAX,qword ptr [RSP + 0x38]
ADD RAX,qword ptr [RDI + 0x358]
MOV qword ptr [RSP + 0x30],RAX
MOV R10,qword ptr [RAX + 0x8]
MOV RAX,RDX
SHL RAX,0x4
LEA RCX,[R13 + RAX*0x1]
CMP RBX,RDX
JLE 0x0011410e
MOV RDI,RBX
MOV RSI,RCX
MOV qword ptr [RSP + 0x20],R10
SUB RDI,RDX
MOV qword ptr [RSP + 0x18],R9
MOV RDX,RDI
LEA RDI,[R13 + RAX*0x1 + 0x10]
MOV dword ptr [RSP + 0x10],R8D
SHL RDX,0x4
MOV qword ptr [RSP + 0x8],RCX
CALL 0x00104510
MOV R10,qword ptr [RSP + 0x20]
MOV R9,qword ptr [RSP + 0x18]
MOV R8D,dword ptr [RSP + 0x10]
MOV RCX,qword ptr [RSP + 0x8]
MOV qword ptr [RCX],R14
ADD RBX,0x1
MOV dword ptr [RCX + 0x8],R8D
MOV RAX,qword ptr [R10 + R15*0x1]
ADD R12,0x1
LEA RAX,[RAX + RAX*0x2]
LEA RDX,[R9 + RAX*0x8]
CMP qword ptr [RDX + 0x8],R12
JA 0x00113fc8
MOV RAX,qword ptr [RSP + 0x30]
MOV RCX,qword ptr [RAX + 0x10]
ADD qword ptr [RSP + 0x28],0x1
MOV RAX,qword ptr [RSP + 0x28]
CMP RCX,RAX
JA 0x00113fa0
MOV R15,qword ptr [RSP + 0x40]
MOV RBP,qword ptr [R15 + 0x300]
MOV RAX,RBP
MOV RDI,RBP
SHR RAX,0x3c
SETNZ AL
SHL RDI,0x4
MOVZX EAX,AL
JS 0x00114c1c
TEST RAX,RAX
JNZ 0x00114c1c
CALL 0x00120ce0
PCMPEQD XMM0,XMM0
MOV qword ptr [RSP + 0x70],RBP
MOV qword ptr [RSP + 0x60],RAX
MOV qword ptr [RSP + 0x68],0x0
MOVAPS xmmword ptr [RSP + 0xa0],XMM0
MOVAPS xmmword ptr [RSP + 0xb0],XMM0
TEST RBX,RBX
JZ 0x001144c5
MOV EAX,dword ptr [RSP + 0x5c]
XOR R10D,R10D
MOV RBP,R13
MOV qword ptr [RSP + 0x28],R13
MOV R14,R10
MOV R13,RBX
MOV ECX,EAX
MOVZX R11D,AL
AND ECX,0x3f
SHR R11D,0x6
MOVZX EAX,CL
MOV dword ptr [RSP + 0x8],R11D
MOV dword ptr [RSP + 0x20],EAX
MOV EAX,0x1
SHL RAX,CL
MOV qword ptr [RSP + 0x18],RAX
JMP 0x0011436b
SHL RCX,0x5
ADD RCX,qword ptr [R15 + 0x250]
MOV EAX,dword ptr [RSP + 0x8]
MOVDQU XMM2,xmmword ptr [RCX + -0x2280]
MOVDQU XMM3,xmmword ptr [RCX + -0x2270]
MOV RDI,qword ptr [RSP + 0x18]
MOVAPS xmmword ptr [RSP + 0xc0],XMM2
MOVAPS xmmword ptr [RSP + 0xd0],XMM3
TEST qword ptr [RSP + RAX*0x8 + 0xc0],RDI
JZ 0x0011482f
MOV RAX,qword ptr [RSP + 0xc0]
MOV RSI,qword ptr [RSP + 0xc8]
MOV RDX,qword ptr [RSP + 0xd0]
MOV RDI,qword ptr [RSP + 0xd8]
CMP R12D,0x1ff
JNZ 0x001148d0
MOV qword ptr [RSP + 0x10],RDX
MOVQ XMM0,qword ptr [RSP + 0x10]
MOV RDX,qword ptr [RSP + 0x68]
MOV RCX,qword ptr [RSP + 0x70]
MOV qword ptr [RSP + 0x10],RDI
MOVHPS XMM0,qword ptr [RSP + 0x10]
MOV qword ptr [RSP + 0x10],RAX
MOV RAX,qword ptr [RSP + 0x60]
PAND XMM0,xmmword ptr [RSP + 0xb0]
MOVQ XMM1,qword ptr [RSP + 0x10]
MOV qword ptr [RSP + 0x10],RSI
MOVAPS xmmword ptr [RSP + 0xb0],XMM0
MOVHPS XMM1,qword ptr [RSP + 0x10]
PAND XMM1,xmmword ptr [RSP + 0xa0]
MOVAPS xmmword ptr [RSP + 0xa0],XMM1
CMP RDX,RCX
JL 0x0011433e
MOV RDX,RCX
SAR RDX,0x1
ADD RDX,RCX
JO 0x00114c3a
IMUL RSI,RDX,0x10
JO 0x00114c3a
CMP RSI,0x7f
MOV R12D,0x8
CMOVG R12,RDX
MOV EDX,0x80
CMOVLE RSI,RDX
TEST RAX,RAX
JZ 0x00114aef
MOV RDX,R12
SUB RDX,RCX
TEST RDX,RDX
JG 0x00114322
ADD RCX,0x1
MOV R12,RCX
JO 0x00114c1c
IMUL RSI,RCX,0x10
JO 0x00114c1c
MOV RDI,RAX
MOV qword ptr [RSP + 0x10],R8
CALL 0x00120d00
MOV qword ptr [RSP + 0x70],R12
MOV RDX,qword ptr [RSP + 0x68]
MOV R8,qword ptr [RSP + 0x10]
LEA RCX,[RDX + 0x1]
SHL RDX,0x4
MOV qword ptr [RSP + 0x60],RAX
ADD RAX,RDX
MOV qword ptr [RSP + 0x68],RCX
MOV qword ptr [RAX],RBX
MOV dword ptr [RAX + 0x8],R8D
ADD R14,0x1
ADD RBP,0x10
CMP R14,R13
JZ 0x001144c0
MOV RBX,qword ptr [RBP]
MOV RAX,qword ptr [R15 + 0x2e0]
MOV R8,qword ptr [RBP + 0x8]
MOV R12D,dword ptr [RBP + 0x8]
MOV RCX,qword ptr [RAX + RBX*0x8]
CMP RCX,0xff
JBE 0x001147f8
CMP RCX,0x113
JG 0x001141f8
CMP RCX,0x10a
JNZ 0x0011435a
MOV RAX,qword ptr [R15 + 0x268]
MOVZX ECX,byte ptr [RSP + 0x20]
MOV RDX,qword ptr [RSP + 0x38]
ADD RDX,qword ptr [R15 + 0x358]
SHL RAX,0x5
ADD RAX,qword ptr [R15 + 0x250]
MOVDQU XMM4,xmmword ptr [RAX]
MOVDQU XMM5,xmmword ptr [RAX + 0x10]
MOV EAX,dword ptr [RSP + 0x8]
MOVAPS xmmword ptr [RSP + 0xc0],XMM4
MOVAPS xmmword ptr [RSP + 0xd0],XMM5
MOV RAX,qword ptr [RSP + RAX*0x8 + 0xc0]
SHR RAX,CL
MOV RCX,RAX
MOVZX EAX,byte ptr [RDX + 0x20]
AND ECX,0x1
AND EAX,R12D
TEST AL,0x7
JZ 0x0011442e
CMP qword ptr [RDX + 0x38],0x0
JZ 0x00114a7f
MOV RSI,R8
ADD RDX,0x30
MOV RDI,RBX
MOV byte ptr [RSP + 0x30],CL
MOV qword ptr [RSP + 0x10],R8
CALL 0x00112200
MOVZX ECX,byte ptr [RSP + 0x30]
MOV R8,qword ptr [RSP + 0x10]
MOV RAX,qword ptr [RSP + 0xc0]
MOV RSI,qword ptr [RSP + 0xc8]
MOV RDX,qword ptr [RSP + 0xd0]
MOV RDI,qword ptr [RSP + 0xd8]
CMP R12D,0x1ff
JNZ 0x0011485e
TEST CL,CL
JNZ 0x00114267
MOV qword ptr [RSP + 0x10],RDX
MOVQ XMM0,qword ptr [RSP + 0x10]
ADD R14,0x1
ADD RBP,0x10
MOV qword ptr [RSP + 0x10],RDI
MOVHPS XMM0,qword ptr [RSP + 0x10]
MOV qword ptr [RSP + 0x10],RAX
MOVQ XMM1,qword ptr [RSP + 0x10]
PANDN XMM0,xmmword ptr [RSP + 0xb0]
MOV qword ptr [RSP + 0x10],RSI
MOVAPS xmmword ptr [RSP + 0xb0],XMM0
MOVHPS XMM1,qword ptr [RSP + 0x10]
PANDN XMM1,xmmword ptr [RSP + 0xa0]
MOVAPS xmmword ptr [RSP + 0xa0],XMM1
CMP R14,R13
JNZ 0x0011436b
MOV R13,qword ptr [RSP + 0x28]
MOV RBP,qword ptr [R15 + 0x300]
XOR EBX,EBX
MOV RAX,RBP
MOV RDI,RBP
SHR RAX,0x3c
MOV EAX,0x1
SETNZ BL
SHL RDI,0x4
CMOVS RBX,RAX
TEST RBX,RBX
JNZ 0x00114c1c
CALL 0x00120ce0
MOV RCX,qword ptr [RSP + 0x68]
MOV qword ptr [RSP + 0x90],RBP
MOV qword ptr [RSP + 0x80],RAX
MOV qword ptr [RSP + 0x88],0x0
TEST RCX,RCX
JLE 0x00114ac7
CMP byte ptr [R15 + 0x378],0x0
JNZ 0x001149f2
MOV RAX,qword ptr [RSP + 0x60]
MOV RDI,RCX
MOV RCX,qword ptr [R15 + 0x230]
XOR EDX,EDX
MOV RSI,qword ptr [RSP + 0xa0]
MOV R8,qword ptr [R15 + 0x210]
TEST RSI,RCX
SETNZ DL
SHL EDX,0x2
MOV R9D,EDX
OR R9D,0x2
TEST RSI,R8
CMOVNZ EDX,R9D
OR RCX,R8
NOT RCX
MOV R8D,EDX
OR R8D,0x1
TEST RCX,RSI
MOV RSI,qword ptr [RSP + 0xa8]
MOV RCX,qword ptr [R15 + 0x238]
CMOVNZ EDX,R8D
MOV R8D,EDX
OR R8D,0x4
TEST RSI,RCX
CMOVNZ EDX,R8D
MOV R8,qword ptr [R15 + 0x218]
MOV R9D,EDX
OR R9D,0x2
TEST RSI,R8
CMOVNZ EDX,R9D
OR RCX,R8
NOT RCX
MOV R8D,EDX
OR R8D,0x1
TEST RCX,RSI
MOV RSI,qword ptr [RSP + 0xb0]
CMOVNZ EDX,R8D
MOV R8,qword ptr [R15 + 0x240]
MOV ECX,EDX
OR ECX,0x4
TEST R8,RSI
CMOVNZ EDX,ECX
MOV RCX,qword ptr [R15 + 0x220]
MOV R9D,EDX
OR R9D,0x2
TEST RCX,RSI
CMOVNZ EDX,R9D
OR RCX,R8
NOT RCX
MOV R8D,EDX
OR R8D,0x1
TEST RCX,RSI
MOV RSI,qword ptr [RSP + 0xb8]
MOV RCX,qword ptr [R15 + 0x248]
CMOVNZ EDX,R8D
MOV R8D,EDX
OR R8D,0x4
TEST RCX,RSI
CMOVNZ EDX,R8D
MOV R8,qword ptr [R15 + 0x228]
MOV R9D,EDX
OR R9D,0x2
TEST RSI,R8
CMOVNZ EDX,R9D
OR RCX,R8
NOT RCX
TEST RCX,RSI
JZ 0x00114b51
OR EDX,0x1
TEST RDI,RDI
JZ 0x00114c0f
SHL RDI,0x4
MOV R8,qword ptr [R15 + 0x388]
XOR ECX,ECX
ADD RDI,RAX
NOP
MOV RSI,qword ptr [RAX]
ADD RAX,0x10
OR ECX,dword ptr [R8 + RSI*0x4]
CMP RDI,RAX
JNZ 0x00114660
MOV R14D,ECX
MOV EAX,ECX
MOV RBP,-0x1
AND R14D,EDX
NOT EAX
MOV R12D,R14D
AND R14D,0x2
AND R12D,0x4
TEST EAX,EDX
JNZ 0x00114bee
MOV RBX,RBP
TEST R12D,R12D
JZ 0x001146b1
LEA RSI,[RSP + 0x60]
MOV EDX,0x4
MOV RDI,R15
CALL 0x00112550
MOV RBX,RAX
MOV R12,RBP
TEST R14D,R14D
JZ 0x001146ce
LEA RSI,[RSP + 0x60]
MOV EDX,0x2
MOV RDI,R15
CALL 0x00112550
MOV R12,RAX
MOV RDI,R15
CALL 0x00111ef0
XOR EDX,EDX
MOV RCX,qword ptr [RSP + 0x48]
JMP 0x001146fa
CMP AL,0x4
MOV RAX,RBX
CMOVNZ RAX,RBP
MOV qword ptr [RCX + RDX*0x8],RAX
ADD RDX,0x1
CMP RDX,0x100
JZ 0x00114728
MOV EAX,EDX
SHR EAX,0x6
MOV RAX,qword ptr [RSP + RAX*0x8 + 0xa0]
BT RAX,RDX
JNC 0x001146ed
MOVZX EAX,byte ptr [R15 + RDX*0x1 + 0xc]
CMP AL,0x2
JNZ 0x001146e0
MOV qword ptr [RCX + RDX*0x8],R12
ADD RDX,0x1
CMP RDX,0x100
JNZ 0x001146fa
MOV RDI,qword ptr [RSP + 0x60]
CALL 0x00104680
MOV RDI,R13
CALL 0x00104680
MOV RDI,qword ptr [RSP + 0x80]
CALL 0x00104680
MOVZX ECX,byte ptr [R15 + 0xb]
MOV RAX,RCX
SHR RAX,0x6
AND EAX,0x3
MOV RAX,qword ptr [RSP + RAX*0x8 + 0xa0]
SHR RAX,CL
TEST AL,0x1
JZ 0x0011478b
MOV RDI,qword ptr [RSP + 0x48]
MOV RAX,qword ptr [R15 + 0x3b8]
MOV RBX,qword ptr [RSP + 0x50]
MOV RDX,qword ptr [RDI + RCX*0x8]
MOV qword ptr [RAX + RBX*0x8],RDX
MOVZX EAX,byte ptr [R15 + 0xb]
MOV qword ptr [RDI + RAX*0x8],-0x1
MOV RDI,qword ptr [RSP + 0x48]
MOVZX EAX,byte ptr [RSP + 0x5b]
MOV RAX,qword ptr [RDI + RAX*0x8]
MOV RDI,qword ptr [RSP + 0xe8]
XOR RDI,qword ptr FS:[0x28]
JNZ 0x00114c53
ADD RSP,0xf8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
OR dword ptr [RCX + 0x8],R8D
JMP 0x00114119
MOV RBP,RAX
JMP 0x00114078
MOV RCX,R13
TEST RBP,RBP
JG 0x0011410e
XOR EDX,EDX
JMP 0x00114026
MOV EAX,ECX
MOV EDX,0x1
PXOR XMM0,XMM0
SHR EAX,0x6
SHL RDX,CL
MOVAPS xmmword ptr [RSP + 0xc0],XMM0
MOVAPS xmmword ptr [RSP + 0xd0],XMM0
MOV qword ptr [RSP + RAX*0x8 + 0xc0],RDX
MOVZX EAX,byte ptr [RSP + 0x5b]
CMP RCX,RAX
JZ 0x0011423a
MOV RDX,qword ptr [RSP + 0xd0]
MOV RSI,qword ptr [RSP + 0xc8]
XOR ECX,ECX
MOV RAX,qword ptr [RSP + 0xc0]
MOV RDI,qword ptr [RSP + 0xd8]
CMP R12D,0x1ff
JZ 0x00114463
MOV R11,qword ptr [RSP + 0x38]
MOV R10,qword ptr [R15 + 0x358]
MOVZX R10D,byte ptr [R10 + R11*0x1 + 0x20]
MOV R11D,R12D
SAR R11D,0x6
AND R11D,R10D
AND R11D,0x7
JZ 0x00114999
MOV R11D,R12D
SAR R11D,0x3
AND R11D,R10D
AND R11D,0x7
JZ 0x00114940
AND R12D,R10D
AND R12D,0x7
JZ 0x001148d7
MOV R10,RAX
OR R10,RSI
OR R10,RDX
OR R10,RDI
JZ 0x0011435a
MOV R10D,dword ptr [RSP + 0x8]
MOV R11,qword ptr [RSP + 0x18]
TEST qword ptr [RSP + R10*0x8 + 0xc0],R11
JNZ 0x0011445b
JMP 0x00114463
MOV ECX,0x1
JMP 0x0011485e
MOV R10,qword ptr [R15 + 0x210]
OR R10,qword ptr [R15 + 0x230]
AND RAX,R10
MOV R10,qword ptr [R15 + 0x218]
OR R10,qword ptr [R15 + 0x238]
AND RSI,R10
MOV R10,qword ptr [R15 + 0x220]
OR R10,qword ptr [R15 + 0x240]
MOV qword ptr [RSP + 0xc0],RAX
AND RDX,R10
MOV R10,qword ptr [R15 + 0x228]
OR R10,qword ptr [R15 + 0x248]
MOV qword ptr [RSP + 0xc8],RSI
AND RDI,R10
MOV qword ptr [RSP + 0xd0],RDX
MOV qword ptr [RSP + 0xd8],RDI
JMP 0x001148a1
MOV R11,qword ptr [R15 + 0x210]
NOT R11
AND RAX,R11
MOV R11,qword ptr [R15 + 0x218]
MOV qword ptr [RSP + 0xc0],RAX
NOT R11
AND RSI,R11
MOV R11,qword ptr [R15 + 0x220]
MOV qword ptr [RSP + 0xc8],RSI
NOT R11
AND RDX,R11
MOV R11,qword ptr [R15 + 0x228]
MOV qword ptr [RSP + 0xd0],RDX
NOT R11
AND RDI,R11
MOV qword ptr [RSP + 0xd8],RDI
JMP 0x00114898
MOV R11,qword ptr [R15 + 0x230]
NOT R11
AND RAX,R11
MOV R11,qword ptr [R15 + 0x238]
MOV qword ptr [RSP + 0xc0],RAX
NOT R11
AND RSI,R11
MOV R11,qword ptr [R15 + 0x240]
MOV qword ptr [RSP + 0xc8],RSI
NOT R11
AND RDX,R11
MOV R11,qword ptr [R15 + 0x248]
MOV qword ptr [RSP + 0xd0],RDX
NOT R11
AND RDI,R11
MOV qword ptr [RSP + 0xd8],RDI
JMP 0x00114884
CMP byte ptr [R15 + 0x3fc],0x0
JZ 0x00114a2f
MOV R8,qword ptr [R15 + 0x348]
MOV RAX,qword ptr [RSP + 0x60]
MOV RDI,RCX
XOR EDX,EDX
NOP dword ptr [RAX]
MOV RSI,RDX
ADD RDX,0x1
SHL RSI,0x4
MOV RSI,qword ptr [RAX + RSI*0x1]
TEST byte ptr [R8 + RSI*0x1],0x1
JZ 0x00114536
CMP RDX,RCX
JNZ 0x00114a10
LEA RBP,[RSP + 0x60]
LEA RCX,[RSP + 0x68]
MOV RAX,qword ptr [R15 + 0x358]
MOV R8D,0xffffffff
LEA RBX,[RSP + 0x80]
MOV RDX,RBP
LEA RSI,[RAX + 0x10]
LEA RDI,[RAX + 0x8]
MOV R9,RBX
CALL 0x00112390
MOV RDI,RBX
LEA RSI,[RBX + 0x8]
MOV RDX,RBP
CALL 0x00111e00
MOV RAX,qword ptr [RSP + 0x60]
MOV RDI,qword ptr [RSP + 0x68]
JMP 0x00114536
MOV EDI,0x10
MOV qword ptr [RSP + 0x40],R8
MOV byte ptr [RSP + 0x30],CL
MOV qword ptr [RSP + 0x10],RDX
CALL 0x00120ce0
MOV RDX,qword ptr [RSP + 0x10]
MOV R8,qword ptr [RSP + 0x40]
MOVDQA XMM6,xmmword ptr [0x001282a0]
MOVZX ECX,byte ptr [RSP + 0x30]
MOV qword ptr [RDX + 0x30],RAX
MOVUPS xmmword ptr [RDX + 0x38],XMM6
MOV RDX,qword ptr [RSP + 0x38]
ADD RDX,qword ptr [R15 + 0x358]
JMP 0x0011440c
CMP byte ptr [R15 + 0x378],0x0
JZ 0x00114b74
MOV EAX,dword ptr [R15 + 0x39c]
MOV RBP,qword ptr [R15 + 0x3c0]
LEA R12D,[RAX + -0x1]
MOVSXD R12,R12D
JMP 0x001146d6
MOV qword ptr [RSP + 0x70],0x0
JMP 0x00114300
MOV EDX,dword ptr [RSI + 0x398]
CMP EDX,0x3ff
JG 0x00114b86
ADD EDX,0x1
MOV dword ptr [R15 + 0x398],EDX
MOV EDI,0x800
CALL 0x00120ce0
MOVDQA XMM0,xmmword ptr [0x00128290]
MOV qword ptr [RSP + 0x48],RAX
LEA RDX,[RAX + 0x800]
MOV qword ptr [RBX],RAX
NOP word ptr CS:[RAX + RAX*0x1]
MOVUPS xmmword ptr [RAX],XMM0
ADD RAX,0x10
CMP RDX,RAX
JNZ 0x00114b40
JMP 0x00113e98
TEST RDI,RDI
JNZ 0x0011464f
TEST EDX,EDX
JNZ 0x00114c0f
MOV RBP,-0x1
MOV RBX,RBP
MOV R12,RBP
JMP 0x001146ce
MOV R12,-0x1
MOV RBX,R12
MOV RBP,R12
JMP 0x001146d6
MOVSXD RBP,dword ptr [RSI + 0x39c]
CMP RBP,qword ptr [RSI + 0x390]
JGE 0x00114be4
NOP word ptr CS:[RAX + RAX*0x1]
MOV RDI,qword ptr [RAX + RBP*0x8]
CALL 0x00104680
MOV RAX,qword ptr [R15 + 0x3a8]
MOV RDI,qword ptr [RAX + RBP*0x8]
CALL 0x00104680
MOV RAX,qword ptr [R15 + 0x3a8]
MOV qword ptr [RAX + RBP*0x8],0x0
MOV RAX,qword ptr [R15 + 0x3a0]
MOV qword ptr [RAX + RBP*0x8],0x0
ADD RBP,0x1
CMP qword ptr [R15 + 0x390],RBP
JG 0x00114ba0
MOV EDX,0x1
JMP 0x00114b0e
XOR ECX,0x7
MOV EDX,ECX
LEA RSI,[RSP + 0x60]
MOV RDI,R15
CALL 0x00112550
MOV RBP,RAX
JMP 0x00114694
XOR EBX,EBX
JMP 0x00114155
XOR R14D,R14D
XOR R12D,R12D
MOV EDX,0x7
JMP 0x00114bf3
CALL 0x00120e70
MOV RSI,0x7ffffffffffffff0
MOV RAX,0x7ffffffffffffff
JMP 0x00114055
MOV R12,0x7ffffffffffffff
MOV RSI,0x7ffffffffffffff0
JMP 0x001142f7
CALL 0x00104240
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nundefined8 FUN_00113e20(long param_1,long param_2,byte param_3)\n\n{\n  char cVar1;\n  byte bVar2;\n  ushort uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  long lVar7;\n  long lVar8;\n  byte *pbVar9;\n  ulong *__src;\n  ulong *puVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong uVar13;\n  undefined1 (*pauVar14) [16];\n  long *plVar15;\n  undefined8 uVar16;\n  undefined8 *puVar17;\n  byte bVar18;\n  uint uVar19;\n  ulong *puVar20;\n  long lVar21;\n  ulong uVar22;\n  uint uVar23;\n  int iVar24;\n  long lVar25;\n  long lVar26;\n  ulong uVar27;\n  long lVar28;\n  ulong uVar29;\n  ulong uVar30;\n  uint uVar31;\n  ulong uVar32;\n  uint uVar33;\n  long in_FS_OFFSET;\n  undefined1 auVar34 [16];\n  undefined1 auVar35 [16];\n  ulong local_100;\n  long local_f8;\n  undefined8 *local_e0;\n  long *local_c8;\n  long local_c0;\n  ulong local_b8;\n  void *local_a8;\n  undefined8 local_a0;\n  ulong local_98;\n  undefined1 local_88 [16];\n  undefined1 local_78 [16];\n  undefined1 local_68 [16];\n  undefined1 local_58 [16];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar7 = param_1 * 0x50;\n  lVar8 = *(long *)(param_2 + 0x3a0);\n  lVar21 = lVar8;\n  if (*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0) {\n    lVar21 = *(long *)(param_2 + 0x3a8);\n  }\n  plVar15 = (long *)(lVar21 + param_1 * 8);\n  local_e0 = (undefined8 *)*plVar15;\n  if (local_e0 == (undefined8 *)0x0) {\n    if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }\n    *(int *)(param_2 + 0x398) = iVar24;\n    local_e0 = (undefined8 *)FUN_00120ce0(0x800);\n    uVar5 = _UNK_00128298;\n    uVar4 = _DAT_00128290;\n    *plVar15 = (long)local_e0;\n    puVar17 = local_e0;\n    do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);\n  }\n  *(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1) = 0;\n  lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n  bVar18 = *(byte *)(lVar8 + 0x20);\n  uVar3 = *(ushort *)(lVar8 + 0x22);\n  uVar23 = (uint)uVar3;\n  if (((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);\n    *pbVar9 = *pbVar9 | 4;\n    lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar3 = *(ushort *)(lVar8 + 0x22);\n    uVar23 = (uint)uVar3;\n  }\n  if (((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 2;\n    lVar8 = lVar7 + *(long *)(param_2 + 0x358);\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar23 = (uint)*(ushort *)(lVar8 + 0x22);\n  }\n  if ((uVar23 & 7 & (uint)bVar18) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 1;\n  }\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) {\nLAB_00114c1c:\n                    /* WARNING: Subroutine does not return */\n    FUN_00120e70();\n  }\n  __src = (ulong *)FUN_00120ce0();\n  local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n  uVar22 = *(ulong *)(local_f8 + 0x10);\n  if (uVar22 == 0) {\n    lVar8 = 0;\n  }\n  else {\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) goto LAB_00114c1c;\n  local_c8 = (long *)FUN_00120ce0();\n  local_88._8_4_ = 0xffffffff;\n  local_88._0_8_ = 0xffffffffffffffff;\n  local_88._12_4_ = 0xffffffff;\n  local_c0 = 0;\n  local_78 = local_88;\n  local_b8 = uVar13;\n  if (lVar8 != 0) {\n    lVar21 = 0;\n    uVar23 = (uint)(param_3 >> 6);\n    uVar13 = 1L << (param_3 & 0x3f);\n    puVar10 = __src;\n    do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);\n  }\nLAB_001144c5:\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if ((long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0) goto LAB_00114c1c;\n  local_a8 = (void *)FUN_00120ce0();\n  local_a0 = 0;\n  local_98 = uVar13;\n  if (local_c0 < 1) {\n    if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }\n    goto LAB_001146d6;\n  }\n  if (*(char *)(param_2 + 0x378) != '\0') {\n    if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }\n    FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);\n    FUN_00111e00(&local_a8,&local_a0,&local_c8);\n  }\nLAB_00114536:\n  uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2;\n  if ((local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0) {\n    if (local_c0 != 0) goto LAB_0011464f;\n    if (uVar23 != 0) goto LAB_00114c0f;\n    lVar21 = -1;\n    lVar7 = -1;\n    lVar8 = lVar21;\n  }\n  else {\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }\n  FUN_00111ef0(param_2);\nLAB_001146d6:\n  uVar13 = 0;\n  do {\n    while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }\n    cVar1 = *(char *)(param_2 + 0xc + uVar13);\n    if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar13] = lVar7;\n    uVar13 = uVar13 + 1;\n  } while (uVar13 != 0x100);\nLAB_00114728:\n  free(local_c8);\n  free(__src);\n  free(local_a8);\n  bVar18 = *(byte *)(param_2 + 0xb);\n  if ((*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0) {\n    *(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];\n    local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return local_e0[param_3];\n}\n\n" comment (function_definition "undefined8 FUN_00113e20(long param_1,long param_2,byte param_3)\n\n{\n  char cVar1;\n  byte bVar2;\n  ushort uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  long lVar7;\n  long lVar8;\n  byte *pbVar9;\n  ulong *__src;\n  ulong *puVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong uVar13;\n  undefined1 (*pauVar14) [16];\n  long *plVar15;\n  undefined8 uVar16;\n  undefined8 *puVar17;\n  byte bVar18;\n  uint uVar19;\n  ulong *puVar20;\n  long lVar21;\n  ulong uVar22;\n  uint uVar23;\n  int iVar24;\n  long lVar25;\n  long lVar26;\n  ulong uVar27;\n  long lVar28;\n  ulong uVar29;\n  ulong uVar30;\n  uint uVar31;\n  ulong uVar32;\n  uint uVar33;\n  long in_FS_OFFSET;\n  undefined1 auVar34 [16];\n  undefined1 auVar35 [16];\n  ulong local_100;\n  long local_f8;\n  undefined8 *local_e0;\n  long *local_c8;\n  long local_c0;\n  ulong local_b8;\n  void *local_a8;\n  undefined8 local_a0;\n  ulong local_98;\n  undefined1 local_88 [16];\n  undefined1 local_78 [16];\n  undefined1 local_68 [16];\n  undefined1 local_58 [16];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar7 = param_1 * 0x50;\n  lVar8 = *(long *)(param_2 + 0x3a0);\n  lVar21 = lVar8;\n  if (*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0) {\n    lVar21 = *(long *)(param_2 + 0x3a8);\n  }\n  plVar15 = (long *)(lVar21 + param_1 * 8);\n  local_e0 = (undefined8 *)*plVar15;\n  if (local_e0 == (undefined8 *)0x0) {\n    if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }\n    *(int *)(param_2 + 0x398) = iVar24;\n    local_e0 = (undefined8 *)FUN_00120ce0(0x800);\n    uVar5 = _UNK_00128298;\n    uVar4 = _DAT_00128290;\n    *plVar15 = (long)local_e0;\n    puVar17 = local_e0;\n    do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);\n  }\n  *(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1) = 0;\n  lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n  bVar18 = *(byte *)(lVar8 + 0x20);\n  uVar3 = *(ushort *)(lVar8 + 0x22);\n  uVar23 = (uint)uVar3;\n  if (((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);\n    *pbVar9 = *pbVar9 | 4;\n    lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar3 = *(ushort *)(lVar8 + 0x22);\n    uVar23 = (uint)uVar3;\n  }\n  if (((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 2;\n    lVar8 = lVar7 + *(long *)(param_2 + 0x358);\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar23 = (uint)*(ushort *)(lVar8 + 0x22);\n  }\n  if ((uVar23 & 7 & (uint)bVar18) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 1;\n  }\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) {\nLAB_00114c1c:\n                    /* WARNING: Subroutine does not return */\n    FUN_00120e70();\n  }\n  __src = (ulong *)FUN_00120ce0();\n  local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n  uVar22 = *(ulong *)(local_f8 + 0x10);\n  if (uVar22 == 0) {\n    lVar8 = 0;\n  }\n  else {\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) goto LAB_00114c1c;\n  local_c8 = (long *)FUN_00120ce0();\n  local_88._8_4_ = 0xffffffff;\n  local_88._0_8_ = 0xffffffffffffffff;\n  local_88._12_4_ = 0xffffffff;\n  local_c0 = 0;\n  local_78 = local_88;\n  local_b8 = uVar13;\n  if (lVar8 != 0) {\n    lVar21 = 0;\n    uVar23 = (uint)(param_3 >> 6);\n    uVar13 = 1L << (param_3 & 0x3f);\n    puVar10 = __src;\n    do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);\n  }\nLAB_001144c5:\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if ((long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0) goto LAB_00114c1c;\n  local_a8 = (void *)FUN_00120ce0();\n  local_a0 = 0;\n  local_98 = uVar13;\n  if (local_c0 < 1) {\n    if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }\n    goto LAB_001146d6;\n  }\n  if (*(char *)(param_2 + 0x378) != '\0') {\n    if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }\n    FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);\n    FUN_00111e00(&local_a8,&local_a0,&local_c8);\n  }\nLAB_00114536:\n  uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2;\n  if ((local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0) {\n    if (local_c0 != 0) goto LAB_0011464f;\n    if (uVar23 != 0) goto LAB_00114c0f;\n    lVar21 = -1;\n    lVar7 = -1;\n    lVar8 = lVar21;\n  }\n  else {\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }\n  FUN_00111ef0(param_2);\nLAB_001146d6:\n  uVar13 = 0;\n  do {\n    while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }\n    cVar1 = *(char *)(param_2 + 0xc + uVar13);\n    if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar13] = lVar7;\n    uVar13 = uVar13 + 1;\n  } while (uVar13 != 0x100);\nLAB_00114728:\n  free(local_c8);\n  free(__src);\n  free(local_a8);\n  bVar18 = *(byte *)(param_2 + 0xb);\n  if ((*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0) {\n    *(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];\n    local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return local_e0[param_3];\n}" type_identifier (function_declarator "FUN_00113e20(long param_1,long param_2,byte param_3)" identifier (parameter_list "(long param_1,long param_2,byte param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "byte param_3" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  byte bVar2;\n  ushort uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  long lVar7;\n  long lVar8;\n  byte *pbVar9;\n  ulong *__src;\n  ulong *puVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong uVar13;\n  undefined1 (*pauVar14) [16];\n  long *plVar15;\n  undefined8 uVar16;\n  undefined8 *puVar17;\n  byte bVar18;\n  uint uVar19;\n  ulong *puVar20;\n  long lVar21;\n  ulong uVar22;\n  uint uVar23;\n  int iVar24;\n  long lVar25;\n  long lVar26;\n  ulong uVar27;\n  long lVar28;\n  ulong uVar29;\n  ulong uVar30;\n  uint uVar31;\n  ulong uVar32;\n  uint uVar33;\n  long in_FS_OFFSET;\n  undefined1 auVar34 [16];\n  undefined1 auVar35 [16];\n  ulong local_100;\n  long local_f8;\n  undefined8 *local_e0;\n  long *local_c8;\n  long local_c0;\n  ulong local_b8;\n  void *local_a8;\n  undefined8 local_a0;\n  ulong local_98;\n  undefined1 local_88 [16];\n  undefined1 local_78 [16];\n  undefined1 local_68 [16];\n  undefined1 local_58 [16];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar7 = param_1 * 0x50;\n  lVar8 = *(long *)(param_2 + 0x3a0);\n  lVar21 = lVar8;\n  if (*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0) {\n    lVar21 = *(long *)(param_2 + 0x3a8);\n  }\n  plVar15 = (long *)(lVar21 + param_1 * 8);\n  local_e0 = (undefined8 *)*plVar15;\n  if (local_e0 == (undefined8 *)0x0) {\n    if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }\n    *(int *)(param_2 + 0x398) = iVar24;\n    local_e0 = (undefined8 *)FUN_00120ce0(0x800);\n    uVar5 = _UNK_00128298;\n    uVar4 = _DAT_00128290;\n    *plVar15 = (long)local_e0;\n    puVar17 = local_e0;\n    do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);\n  }\n  *(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1) = 0;\n  lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n  bVar18 = *(byte *)(lVar8 + 0x20);\n  uVar3 = *(ushort *)(lVar8 + 0x22);\n  uVar23 = (uint)uVar3;\n  if (((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);\n    *pbVar9 = *pbVar9 | 4;\n    lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar3 = *(ushort *)(lVar8 + 0x22);\n    uVar23 = (uint)uVar3;\n  }\n  if (((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 2;\n    lVar8 = lVar7 + *(long *)(param_2 + 0x358);\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar23 = (uint)*(ushort *)(lVar8 + 0x22);\n  }\n  if ((uVar23 & 7 & (uint)bVar18) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 1;\n  }\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) {\nLAB_00114c1c:\n                    /* WARNING: Subroutine does not return */\n    FUN_00120e70();\n  }\n  __src = (ulong *)FUN_00120ce0();\n  local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n  uVar22 = *(ulong *)(local_f8 + 0x10);\n  if (uVar22 == 0) {\n    lVar8 = 0;\n  }\n  else {\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) goto LAB_00114c1c;\n  local_c8 = (long *)FUN_00120ce0();\n  local_88._8_4_ = 0xffffffff;\n  local_88._0_8_ = 0xffffffffffffffff;\n  local_88._12_4_ = 0xffffffff;\n  local_c0 = 0;\n  local_78 = local_88;\n  local_b8 = uVar13;\n  if (lVar8 != 0) {\n    lVar21 = 0;\n    uVar23 = (uint)(param_3 >> 6);\n    uVar13 = 1L << (param_3 & 0x3f);\n    puVar10 = __src;\n    do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);\n  }\nLAB_001144c5:\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if ((long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0) goto LAB_00114c1c;\n  local_a8 = (void *)FUN_00120ce0();\n  local_a0 = 0;\n  local_98 = uVar13;\n  if (local_c0 < 1) {\n    if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }\n    goto LAB_001146d6;\n  }\n  if (*(char *)(param_2 + 0x378) != '\0') {\n    if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }\n    FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);\n    FUN_00111e00(&local_a8,&local_a0,&local_c8);\n  }\nLAB_00114536:\n  uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2;\n  if ((local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0) {\n    if (local_c0 != 0) goto LAB_0011464f;\n    if (uVar23 != 0) goto LAB_00114c0f;\n    lVar21 = -1;\n    lVar7 = -1;\n    lVar8 = lVar21;\n  }\n  else {\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }\n  FUN_00111ef0(param_2);\nLAB_001146d6:\n  uVar13 = 0;\n  do {\n    while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }\n    cVar1 = *(char *)(param_2 + 0xc + uVar13);\n    if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar13] = lVar7;\n    uVar13 = uVar13 + 1;\n  } while (uVar13 != 0x100);\nLAB_00114728:\n  free(local_c8);\n  free(__src);\n  free(local_a8);\n  bVar18 = *(byte *)(param_2 + 0xb);\n  if ((*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0) {\n    *(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];\n    local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return local_e0[param_3];\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "ulong *__src;" type_identifier (pointer_declarator "*__src" * identifier) ;) (declaration "ulong *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "ulong uVar13;" type_identifier identifier ;) (expression_statement "undefined1 (*pauVar14) [16];" (subscript_expression "undefined1 (*pauVar14) [16]" (call_expression "undefined1 (*pauVar14)" identifier (argument_list "(*pauVar14)" ( (pointer_expression "*pauVar14" * identifier) ))) [ number_literal ]) ;) (declaration "long *plVar15;" (sized_type_specifier "long" long) (pointer_declarator "*plVar15" * identifier) ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "undefined8 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "byte bVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "ulong *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "long lVar21;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar22;" type_identifier identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "long lVar25;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar26;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar27;" type_identifier identifier ;) (declaration "long lVar28;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar29;" type_identifier identifier ;) (declaration "ulong uVar30;" type_identifier identifier ;) (declaration "uint uVar31;" type_identifier identifier ;) (declaration "ulong uVar32;" type_identifier identifier ;) (declaration "uint uVar33;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auVar34 [16];" type_identifier (array_declarator "auVar34 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar35 [16];" type_identifier (array_declarator "auVar35 [16]" identifier [ number_literal ]) ;) (declaration "ulong local_100;" type_identifier identifier ;) (declaration "long local_f8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *local_e0;" type_identifier (pointer_declarator "*local_e0" * identifier) ;) (declaration "long *local_c8;" (sized_type_specifier "long" long) (pointer_declarator "*local_c8" * identifier) ;) (declaration "long local_c0;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong local_b8;" type_identifier identifier ;) (declaration "void *local_a8;" primitive_type (pointer_declarator "*local_a8" * identifier) ;) (declaration "undefined8 local_a0;" type_identifier identifier ;) (declaration "ulong local_98;" type_identifier identifier ;) (declaration "undefined1 local_88 [16];" type_identifier (array_declarator "local_88 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 local_78 [16];" type_identifier (array_declarator "local_78 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 local_68 [16];" type_identifier (array_declarator "local_68 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 local_58 [16];" type_identifier (array_declarator "local_58 [16]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "lVar7 = param_1 * 0x50;" (assignment_expression "lVar7 = param_1 * 0x50" identifier = (binary_expression "param_1 * 0x50" identifier * number_literal)) ;) (expression_statement "lVar8 = *(long *)(param_2 + 0x3a0);" (assignment_expression "lVar8 = *(long *)(param_2 + 0x3a0)" identifier = (pointer_expression "*(long *)(param_2 + 0x3a0)" * (cast_expression "(long *)(param_2 + 0x3a0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3a0)" ( (binary_expression "param_2 + 0x3a0" identifier + number_literal) ))))) ;) (expression_statement "lVar21 = lVar8;" (assignment_expression "lVar21 = lVar8" identifier = identifier) ;) (if_statement "if (*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0) {\n    lVar21 = *(long *)(param_2 + 0x3a8);\n  }" if (parenthesized_expression "(*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0)" ( (binary_expression "*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0" (pointer_expression "*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7)" * (cast_expression "(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x358) + 0x22 + lVar7)" ( (binary_expression "*(long *)(param_2 + 0x358) + 0x22 + lVar7" (binary_expression "*(long *)(param_2 + 0x358) + 0x22" (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) )) (compound_statement "{\n    lVar21 = *(long *)(param_2 + 0x3a8);\n  }" { (expression_statement "lVar21 = *(long *)(param_2 + 0x3a8);" (assignment_expression "lVar21 = *(long *)(param_2 + 0x3a8)" identifier = (pointer_expression "*(long *)(param_2 + 0x3a8)" * (cast_expression "(long *)(param_2 + 0x3a8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3a8)" ( (binary_expression "param_2 + 0x3a8" identifier + number_literal) ))))) ;) })) (expression_statement "plVar15 = (long *)(lVar21 + param_1 * 8);" (assignment_expression "plVar15 = (long *)(lVar21 + param_1 * 8)" identifier = (cast_expression "(long *)(lVar21 + param_1 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + param_1 * 8)" ( (binary_expression "lVar21 + param_1 * 8" identifier + (binary_expression "param_1 * 8" identifier * number_literal)) )))) ;) (expression_statement "local_e0 = (undefined8 *)*plVar15;" (assignment_expression "local_e0 = (undefined8 *)*plVar15" identifier = (cast_expression "(undefined8 *)*plVar15" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar15" * identifier))) ;) (if_statement "if (local_e0 == (undefined8 *)0x0) {\n    if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }\n    *(int *)(param_2 + 0x398) = iVar24;\n    local_e0 = (undefined8 *)FUN_00120ce0(0x800);\n    uVar5 = _UNK_00128298;\n    uVar4 = _DAT_00128290;\n    *plVar15 = (long)local_e0;\n    puVar17 = local_e0;\n    do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);\n  }" if (parenthesized_expression "(local_e0 == (undefined8 *)0x0)" ( (binary_expression "local_e0 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }\n    *(int *)(param_2 + 0x398) = iVar24;\n    local_e0 = (undefined8 *)FUN_00120ce0(0x800);\n    uVar5 = _UNK_00128298;\n    uVar4 = _DAT_00128290;\n    *plVar15 = (long)local_e0;\n    puVar17 = local_e0;\n    do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);\n  }" { (if_statement "if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }" if (parenthesized_expression "(*(int *)(param_2 + 0x398) < 0x400)" ( (binary_expression "*(int *)(param_2 + 0x398) < 0x400" (pointer_expression "*(int *)(param_2 + 0x398)" * (cast_expression "(int *)(param_2 + 0x398)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x398)" ( (binary_expression "param_2 + 0x398" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }" { (expression_statement "iVar24 = *(int *)(param_2 + 0x398) + 1;" (assignment_expression "iVar24 = *(int *)(param_2 + 0x398) + 1" identifier = (binary_expression "*(int *)(param_2 + 0x398) + 1" (pointer_expression "*(int *)(param_2 + 0x398)" * (cast_expression "(int *)(param_2 + 0x398)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x398)" ( (binary_expression "param_2 + 0x398" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }" else (compound_statement "{\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }" { (expression_statement "lVar21 = (long)*(int *)(param_2 + 0x39c);" (assignment_expression "lVar21 = (long)*(int *)(param_2 + 0x39c)" identifier = (cast_expression "(long)*(int *)(param_2 + 0x39c)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(int *)(param_2 + 0x39c)" * (cast_expression "(int *)(param_2 + 0x39c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x39c)" ( (binary_expression "param_2 + 0x39c" identifier + number_literal) )))))) ;) (if_statement "if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }" if (parenthesized_expression "(lVar21 < *(long *)(param_2 + 0x390))" ( (binary_expression "lVar21 < *(long *)(param_2 + 0x390)" identifier < (pointer_expression "*(long *)(param_2 + 0x390)" * (cast_expression "(long *)(param_2 + 0x390)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x390)" ( (binary_expression "param_2 + 0x390" identifier + number_literal) ))))) )) (compound_statement "{\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }" { (do_statement "do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));" do (compound_statement "{\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        }" { (expression_statement "free(*(void **)(lVar8 + lVar21 * 8));" (call_expression "free(*(void **)(lVar8 + lVar21 * 8))" identifier (argument_list "(*(void **)(lVar8 + lVar21 * 8))" ( (pointer_expression "*(void **)(lVar8 + lVar21 * 8)" * (cast_expression "(void **)(lVar8 + lVar21 * 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + lVar21 * 8)" ( (binary_expression "lVar8 + lVar21 * 8" identifier + (binary_expression "lVar21 * 8" identifier * number_literal)) )))) ))) ;) (expression_statement "free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));" (call_expression "free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8))" identifier (argument_list "(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8))" ( (pointer_expression "*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" * (cast_expression "(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" ( (binary_expression "*(long *)(param_2 + 0x3a8) + lVar21 * 8" (pointer_expression "*(long *)(param_2 + 0x3a8)" * (cast_expression "(long *)(param_2 + 0x3a8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3a8)" ( (binary_expression "param_2 + 0x3a8" identifier + number_literal) )))) + (binary_expression "lVar21 * 8" identifier * number_literal)) )))) ))) ;) (expression_statement "*(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;" (assignment_expression "*(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0" (pointer_expression "*(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" * (cast_expression "(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" ( (binary_expression "*(long *)(param_2 + 0x3a8) + lVar21 * 8" (pointer_expression "*(long *)(param_2 + 0x3a8)" * (cast_expression "(long *)(param_2 + 0x3a8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3a8)" ( (binary_expression "param_2 + 0x3a8" identifier + number_literal) )))) + (binary_expression "lVar21 * 8" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "lVar8 = *(long *)(param_2 + 0x3a0);" (assignment_expression "lVar8 = *(long *)(param_2 + 0x3a0)" identifier = (pointer_expression "*(long *)(param_2 + 0x3a0)" * (cast_expression "(long *)(param_2 + 0x3a0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3a0)" ( (binary_expression "param_2 + 0x3a0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(lVar8 + lVar21 * 8) = 0;" (assignment_expression "*(undefined8 *)(lVar8 + lVar21 * 8) = 0" (pointer_expression "*(undefined8 *)(lVar8 + lVar21 * 8)" * (cast_expression "(undefined8 *)(lVar8 + lVar21 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + lVar21 * 8)" ( (binary_expression "lVar8 + lVar21 * 8" identifier + (binary_expression "lVar21 * 8" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "lVar21 = lVar21 + 1;" (assignment_expression "lVar21 = lVar21 + 1" identifier = (binary_expression "lVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar21 < *(long *)(param_2 + 0x390))" ( (binary_expression "lVar21 < *(long *)(param_2 + 0x390)" identifier < (pointer_expression "*(long *)(param_2 + 0x390)" * (cast_expression "(long *)(param_2 + 0x390)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x390)" ( (binary_expression "param_2 + 0x390" identifier + number_literal) ))))) )) ;) })) (expression_statement "iVar24 = 1;" (assignment_expression "iVar24 = 1" identifier = number_literal) ;) }))) (expression_statement "*(int *)(param_2 + 0x398) = iVar24;" (assignment_expression "*(int *)(param_2 + 0x398) = iVar24" (pointer_expression "*(int *)(param_2 + 0x398)" * (cast_expression "(int *)(param_2 + 0x398)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x398)" ( (binary_expression "param_2 + 0x398" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_e0 = (undefined8 *)FUN_00120ce0(0x800);" (assignment_expression "local_e0 = (undefined8 *)FUN_00120ce0(0x800)" identifier = (cast_expression "(undefined8 *)FUN_00120ce0(0x800)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00120ce0(0x800)" identifier (argument_list "(0x800)" ( number_literal ))))) ;) (expression_statement "uVar5 = _UNK_00128298;" (assignment_expression "uVar5 = _UNK_00128298" identifier = identifier) ;) (expression_statement "uVar4 = _DAT_00128290;" (assignment_expression "uVar4 = _DAT_00128290" identifier = identifier) ;) (expression_statement "*plVar15 = (long)local_e0;" (assignment_expression "*plVar15 = (long)local_e0" (pointer_expression "*plVar15" * identifier) = (cast_expression "(long)local_e0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "puVar17 = local_e0;" (assignment_expression "puVar17 = local_e0" identifier = identifier) ;) (do_statement "do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);" do (compound_statement "{\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    }" { (expression_statement "*puVar17 = uVar4;" (assignment_expression "*puVar17 = uVar4" (pointer_expression "*puVar17" * identifier) = identifier) ;) (expression_statement "puVar17[1] = uVar5;" (assignment_expression "puVar17[1] = uVar5" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_e0 + 0x100 != puVar17)" ( (binary_expression "local_e0 + 0x100 != puVar17" (binary_expression "local_e0 + 0x100" identifier + number_literal) != identifier) )) ;) })) (expression_statement "*(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1) = 0;" (assignment_expression "*(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1) = 0" (pointer_expression "*(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1)" * (cast_expression "(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x3b0) + param_1)" ( (binary_expression "*(long *)(param_2 + 0x3b0) + param_1" (pointer_expression "*(long *)(param_2 + 0x3b0)" * (cast_expression "(long *)(param_2 + 0x3b0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3b0)" ( (binary_expression "param_2 + 0x3b0" identifier + number_literal) )))) + identifier) )))) = number_literal) ;) (expression_statement "lVar8 = *(long *)(param_2 + 0x358) + lVar7;" (assignment_expression "lVar8 = *(long *)(param_2 + 0x358) + lVar7" identifier = (binary_expression "*(long *)(param_2 + 0x358) + lVar7" (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))) + identifier)) ;) (expression_statement "bVar18 = *(byte *)(lVar8 + 0x20);" (assignment_expression "bVar18 = *(byte *)(lVar8 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar8 + 0x20)" * (cast_expression "(byte *)(lVar8 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x20)" ( (binary_expression "lVar8 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(ushort *)(lVar8 + 0x22);" (assignment_expression "uVar3 = *(ushort *)(lVar8 + 0x22)" identifier = (pointer_expression "*(ushort *)(lVar8 + 0x22)" * (cast_expression "(ushort *)(lVar8 + 0x22)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x22)" ( (binary_expression "lVar8 + 0x22" identifier + number_literal) ))))) ;) (expression_statement "uVar23 = (uint)uVar3;" (assignment_expression "uVar23 = (uint)uVar3" identifier = (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);\n    *pbVar9 = *pbVar9 | 4;\n    lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar3 = *(ushort *)(lVar8 + 0x22);\n    uVar23 = (uint)uVar3;\n  }" if (parenthesized_expression "(((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0)" ( (binary_expression "((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0" (parenthesized_expression "((int)uVar23 >> 6 & (uint)bVar18 & 7)" ( (binary_expression "(int)uVar23 >> 6 & (uint)bVar18 & 7" (binary_expression "(int)uVar23 >> 6 & (uint)bVar18" (binary_expression "(int)uVar23 >> 6" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) )) != number_literal) )) (compound_statement "{\n    pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);\n    *pbVar9 = *pbVar9 | 4;\n    lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar3 = *(ushort *)(lVar8 + 0x22);\n    uVar23 = (uint)uVar3;\n  }" { (expression_statement "pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);" (assignment_expression "pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1)" identifier = (cast_expression "(byte *)(*(long *)(param_2 + 0x3b0) + param_1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x3b0) + param_1)" ( (binary_expression "*(long *)(param_2 + 0x3b0) + param_1" (pointer_expression "*(long *)(param_2 + 0x3b0)" * (cast_expression "(long *)(param_2 + 0x3b0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3b0)" ( (binary_expression "param_2 + 0x3b0" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "*pbVar9 = *pbVar9 | 4;" (assignment_expression "*pbVar9 = *pbVar9 | 4" (pointer_expression "*pbVar9" * identifier) = (binary_expression "*pbVar9 | 4" (pointer_expression "*pbVar9" * identifier) | number_literal)) ;) (expression_statement "lVar8 = *(long *)(param_2 + 0x358) + lVar7;" (assignment_expression "lVar8 = *(long *)(param_2 + 0x358) + lVar7" identifier = (binary_expression "*(long *)(param_2 + 0x358) + lVar7" (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))) + identifier)) ;) (expression_statement "bVar18 = *(byte *)(lVar8 + 0x20);" (assignment_expression "bVar18 = *(byte *)(lVar8 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar8 + 0x20)" * (cast_expression "(byte *)(lVar8 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x20)" ( (binary_expression "lVar8 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(ushort *)(lVar8 + 0x22);" (assignment_expression "uVar3 = *(ushort *)(lVar8 + 0x22)" identifier = (pointer_expression "*(ushort *)(lVar8 + 0x22)" * (cast_expression "(ushort *)(lVar8 + 0x22)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x22)" ( (binary_expression "lVar8 + 0x22" identifier + number_literal) ))))) ;) (expression_statement "uVar23 = (uint)uVar3;" (assignment_expression "uVar23 = (uint)uVar3" identifier = (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (if_statement "if (((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 2;\n    lVar8 = lVar7 + *(long *)(param_2 + 0x358);\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar23 = (uint)*(ushort *)(lVar8 + 0x22);\n  }" if (parenthesized_expression "(((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0)" ( (binary_expression "((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0" (parenthesized_expression "((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7)" ( (binary_expression "(int)(uint)uVar3 >> 3 & (uint)bVar18 & 7" (binary_expression "(int)(uint)uVar3 >> 3 & (uint)bVar18" (binary_expression "(int)(uint)uVar3 >> 3" (cast_expression "(int)(uint)uVar3" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) >> number_literal) & (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) )) != number_literal) )) (compound_statement "{\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 2;\n    lVar8 = lVar7 + *(long *)(param_2 + 0x358);\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar23 = (uint)*(ushort *)(lVar8 + 0x22);\n  }" { (expression_statement "pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));" (assignment_expression "pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0))" identifier = (cast_expression "(byte *)(param_1 + *(long *)(param_2 + 0x3b0))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(long *)(param_2 + 0x3b0))" ( (binary_expression "param_1 + *(long *)(param_2 + 0x3b0)" identifier + (pointer_expression "*(long *)(param_2 + 0x3b0)" * (cast_expression "(long *)(param_2 + 0x3b0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3b0)" ( (binary_expression "param_2 + 0x3b0" identifier + number_literal) ))))) )))) ;) (expression_statement "*pbVar9 = *pbVar9 | 2;" (assignment_expression "*pbVar9 = *pbVar9 | 2" (pointer_expression "*pbVar9" * identifier) = (binary_expression "*pbVar9 | 2" (pointer_expression "*pbVar9" * identifier) | number_literal)) ;) (expression_statement "lVar8 = lVar7 + *(long *)(param_2 + 0x358);" (assignment_expression "lVar8 = lVar7 + *(long *)(param_2 + 0x358)" identifier = (binary_expression "lVar7 + *(long *)(param_2 + 0x358)" identifier + (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))))) ;) (expression_statement "bVar18 = *(byte *)(lVar8 + 0x20);" (assignment_expression "bVar18 = *(byte *)(lVar8 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar8 + 0x20)" * (cast_expression "(byte *)(lVar8 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x20)" ( (binary_expression "lVar8 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar23 = (uint)*(ushort *)(lVar8 + 0x22);" (assignment_expression "uVar23 = (uint)*(ushort *)(lVar8 + 0x22)" identifier = (binary_expression "(uint)*(ushort *)(lVar8 + 0x22)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(lVar8 + 0x22)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x22)" ( (binary_expression "lVar8 + 0x22" identifier + number_literal) ))))) ;) })) (if_statement "if ((uVar23 & 7 & (uint)bVar18) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 1;\n  }" if (parenthesized_expression "((uVar23 & 7 & (uint)bVar18) != 0)" ( (binary_expression "(uVar23 & 7 & (uint)bVar18) != 0" (parenthesized_expression "(uVar23 & 7 & (uint)bVar18)" ( (binary_expression "uVar23 & 7 & (uint)bVar18" (binary_expression "uVar23 & 7" identifier & number_literal) & (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) )) != number_literal) )) (compound_statement "{\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 1;\n  }" { (expression_statement "pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));" (assignment_expression "pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0))" identifier = (cast_expression "(byte *)(param_1 + *(long *)(param_2 + 0x3b0))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(long *)(param_2 + 0x3b0))" ( (binary_expression "param_1 + *(long *)(param_2 + 0x3b0)" identifier + (pointer_expression "*(long *)(param_2 + 0x3b0)" * (cast_expression "(long *)(param_2 + 0x3b0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3b0)" ( (binary_expression "param_2 + 0x3b0" identifier + number_literal) ))))) )))) ;) (expression_statement "*pbVar9 = *pbVar9 | 1;" (assignment_expression "*pbVar9 = *pbVar9 | 1" (pointer_expression "*pbVar9" * identifier) = (binary_expression "*pbVar9 | 1" (pointer_expression "*pbVar9" * identifier) | number_literal)) ;) })) (expression_statement "uVar13 = *(ulong *)(param_2 + 0x300);" (assignment_expression "uVar13 = *(ulong *)(param_2 + 0x300)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x300)" * (cast_expression "(ulong *)(param_2 + 0x300)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x300)" ( (binary_expression "param_2 + 0x300" identifier + number_literal) ))))) ;) (if_statement "if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) {\nLAB_00114c1c:\n                    /* WARNING: Subroutine does not return */\n    FUN_00120e70();\n  }" if (parenthesized_expression "(((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0))" ( (binary_expression "((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)" (parenthesized_expression "((long)(uVar13 << 4) < 0)" ( (binary_expression "(long)(uVar13 << 4) < 0" (cast_expression "(long)(uVar13 << 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar13 << 4)" ( (binary_expression "uVar13 << 4" identifier << number_literal) ))) < number_literal) )) || (parenthesized_expression "(uVar13 >> 0x3c != 0)" ( (binary_expression "uVar13 >> 0x3c != 0" (binary_expression "uVar13 >> 0x3c" identifier >> number_literal) != number_literal) ))) )) (compound_statement "{\nLAB_00114c1c:\n                    /* WARNING: Subroutine does not return */\n    FUN_00120e70();\n  }" { (labeled_statement "LAB_00114c1c:\n                    /* WARNING: Subroutine does not return */\n    FUN_00120e70();" statement_identifier : comment (expression_statement "FUN_00120e70();" (call_expression "FUN_00120e70()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "__src = (ulong *)FUN_00120ce0();" (assignment_expression "__src = (ulong *)FUN_00120ce0()" identifier = (cast_expression "(ulong *)FUN_00120ce0()" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00120ce0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_f8 = lVar7 + *(long *)(param_2 + 0x358);" (assignment_expression "local_f8 = lVar7 + *(long *)(param_2 + 0x358)" identifier = (binary_expression "lVar7 + *(long *)(param_2 + 0x358)" identifier + (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))))) ;) (expression_statement "uVar22 = *(ulong *)(local_f8 + 0x10);" (assignment_expression "uVar22 = *(ulong *)(local_f8 + 0x10)" identifier = (pointer_expression "*(ulong *)(local_f8 + 0x10)" * (cast_expression "(ulong *)(local_f8 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_f8 + 0x10)" ( (binary_expression "local_f8 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (uVar22 == 0) {\n    lVar8 = 0;\n  }\n  else {\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n    lVar8 = 0;\n  }" { (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }" else (compound_statement "{\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }" { (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (expression_statement "lVar26 = *(long *)(local_f8 + 8);" (assignment_expression "lVar26 = *(long *)(local_f8 + 8)" identifier = (pointer_expression "*(long *)(local_f8 + 8)" * (cast_expression "(long *)(local_f8 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_f8 + 8)" ( (binary_expression "local_f8 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (expression_statement "lVar21 = *(long *)(param_2 + 0x370);" (assignment_expression "lVar21 = *(long *)(param_2 + 0x370)" identifier = (pointer_expression "*(long *)(param_2 + 0x370)" * (cast_expression "(long *)(param_2 + 0x370)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x370)" ( (binary_expression "param_2 + 0x370" identifier + number_literal) ))))) ;) (do_statement "do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);" do (compound_statement "{\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    }" { (expression_statement "uVar32 = 0;" (assignment_expression "uVar32 = 0" identifier = number_literal) ;) (expression_statement "plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);" (assignment_expression "plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" identifier = (cast_expression "(long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" ( (binary_expression "lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18" identifier + (binary_expression "*(long *)(lVar26 + local_100 * 0x10) * 0x18" (pointer_expression "*(long *)(lVar26 + local_100 * 0x10)" * (cast_expression "(long *)(lVar26 + local_100 * 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar26 + local_100 * 0x10)" ( (binary_expression "lVar26 + local_100 * 0x10" identifier + (binary_expression "local_100 * 0x10" identifier * number_literal)) )))) * number_literal)) )))) ;) (if_statement "if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }" if (parenthesized_expression "(plVar15[1] != 0)" ( (binary_expression "plVar15[1] != 0" (subscript_expression "plVar15[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }" { (do_statement "do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);" do (compound_statement "{\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        }" { (expression_statement "puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);" (assignment_expression "puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15)" identifier = (cast_expression "(ulong *)(uVar32 * 0x10 + *plVar15)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar32 * 0x10 + *plVar15)" ( (binary_expression "uVar32 * 0x10 + *plVar15" (binary_expression "uVar32 * 0x10" identifier * number_literal) + (pointer_expression "*plVar15" * identifier)) )))) ;) (expression_statement "uVar22 = *puVar10;" (assignment_expression "uVar22 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "uVar23 = (uint)puVar10[1];" (assignment_expression "uVar23 = (uint)puVar10[1]" identifier = (cast_expression "(uint)puVar10[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar10[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar10 = __src;" (assignment_expression "puVar10 = __src" identifier = identifier) ;) (if_statement "if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }" { (if_statement "if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }" if (parenthesized_expression "((long)uVar13 < 1)" ( (binary_expression "(long)uVar13 < 1" (cast_expression "(long)uVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n              lVar25 = 0;\n              goto LAB_00114026;\n            }" { (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00114026;" goto statement_identifier ;) })) }) (else_clause "else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }" else (compound_statement "{\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }" { (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" identifier = number_literal) ;) (expression_statement "lVar28 = lVar8;" (assignment_expression "lVar28 = lVar8" identifier = identifier) ;) (do_statement "do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);" do (compound_statement "{\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            }" { (while_statement "while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }" { (expression_statement "lVar11 = lVar28 + lVar25 >> 1;" (assignment_expression "lVar11 = lVar28 + lVar25 >> 1" identifier = (binary_expression "lVar28 + lVar25 >> 1" (binary_expression "lVar28 + lVar25" identifier + identifier) >> number_literal)) ;) (expression_statement "puVar20 = __src + lVar11 * 2;" (assignment_expression "puVar20 = __src + lVar11 * 2" identifier = (binary_expression "__src + lVar11 * 2" identifier + (binary_expression "lVar11 * 2" identifier * number_literal))) ;) (expression_statement "uVar12 = *puVar20;" (assignment_expression "uVar12 = *puVar20" identifier = (pointer_expression "*puVar20" * identifier)) ;) (if_statement "if (uVar12 <= uVar22 && uVar22 != uVar12) break;" if (parenthesized_expression "(uVar12 <= uVar22 && uVar22 != uVar12)" ( (binary_expression "uVar12 <= uVar22 && uVar22 != uVar12" (binary_expression "uVar12 <= uVar22" identifier <= identifier) && (binary_expression "uVar22 != uVar12" identifier != identifier)) )) (break_statement "break;" break ;)) (if_statement "if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }" if (parenthesized_expression "(uVar22 == uVar12)" ( (binary_expression "uVar22 == uVar12" identifier == identifier) )) (compound_statement "{\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }" { (expression_statement "*(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;" (assignment_expression "*(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23" (pointer_expression "*(uint *)(puVar20 + 1)" * (cast_expression "(uint *)(puVar20 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 1)" ( (binary_expression "puVar20 + 1" identifier + number_literal) )))) = (binary_expression "(uint)puVar20[1] | uVar23" (cast_expression "(uint)puVar20[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar20[1]" identifier [ number_literal ])) | identifier)) ;) (goto_statement "goto LAB_00114119;" goto statement_identifier ;) })) (expression_statement "lVar28 = lVar11;" (assignment_expression "lVar28 = lVar11" identifier = identifier) ;) (if_statement "if (lVar11 <= lVar25) goto LAB_0011401d;" if (parenthesized_expression "(lVar11 <= lVar25)" ( (binary_expression "lVar11 <= lVar25" identifier <= identifier) )) (goto_statement "goto LAB_0011401d;" goto statement_identifier ;)) })) (expression_statement "lVar25 = lVar11 + 1;" (assignment_expression "lVar25 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar25 < lVar28)" ( (binary_expression "lVar25 < lVar28" identifier < identifier) )) ;) (labeled_statement "LAB_0011401d:\n            uVar12 = uVar13;" statement_identifier : (expression_statement "uVar12 = uVar13;" (assignment_expression "uVar12 = uVar13" identifier = identifier) ;)) (if_statement "if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }" if (parenthesized_expression "((long)uVar13 <= lVar8)" ( (binary_expression "(long)uVar13 <= lVar8" (cast_expression "(long)uVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) <= identifier) )) (compound_statement "{\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }" { (labeled_statement "LAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;" statement_identifier : (expression_statement "uVar12 = ((long)uVar13 >> 1) + uVar13;" (assignment_expression "uVar12 = ((long)uVar13 >> 1) + uVar13" identifier = (binary_expression "((long)uVar13 >> 1) + uVar13" (parenthesized_expression "((long)uVar13 >> 1)" ( (binary_expression "(long)uVar13 >> 1" (cast_expression "(long)uVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )) + identifier)) ;)) (if_statement "if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }" if (parenthesized_expression "((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))" ( (binary_expression "(SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))" (parenthesized_expression "(SCARRY8((long)uVar13 >> 1,uVar13))" ( (call_expression "SCARRY8((long)uVar13 >> 1,uVar13)" identifier (argument_list "((long)uVar13 >> 1,uVar13)" ( (binary_expression "(long)uVar13 >> 1" (cast_expression "(long)uVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) , identifier ))) )) || (parenthesized_expression "(lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))" ( (comma_expression "lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)" (assignment_expression "lVar21 = uVar12 * 0x10" identifier = (binary_expression "uVar12 * 0x10" identifier * number_literal)) , (binary_expression "SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816(lVar21)" identifier (argument_list "(lVar21)" ( identifier ))) != (binary_expression "SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816((long)uVar12)" identifier (argument_list "((long)uVar12)" ( (cast_expression "(long)uVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) * (call_expression "SEXT816(0x10)" identifier (argument_list "(0x10)" ( number_literal )))))) ))) )) (compound_statement "{\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }" { (expression_statement "lVar21 = 0x7ffffffffffffff0;" (assignment_expression "lVar21 = 0x7ffffffffffffff0" identifier = number_literal) ;) (expression_statement "uVar12 = 0x7ffffffffffffff;" (assignment_expression "uVar12 = 0x7ffffffffffffff" identifier = number_literal) ;) }) (else_clause "else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }" else (if_statement "if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }" if (parenthesized_expression "(lVar21 < 0x80)" ( (binary_expression "lVar21 < 0x80" identifier < number_literal) )) (compound_statement "{\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }" { (expression_statement "uVar12 = 8;" (assignment_expression "uVar12 = 8" identifier = number_literal) ;) (expression_statement "lVar21 = 0x80;" (assignment_expression "lVar21 = 0x80" identifier = number_literal) ;) })))) (if_statement "if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;" if (parenthesized_expression "(((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  )))" ( (binary_expression "((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))" (parenthesized_expression "((long)(uVar12 - uVar13) < 1)" ( (binary_expression "(long)(uVar12 - uVar13) < 1" (cast_expression "(long)(uVar12 - uVar13)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar12 - uVar13)" ( (binary_expression "uVar12 - uVar13" identifier - identifier) ))) < number_literal) )) && (parenthesized_expression "((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))" ( (parenthesized_expression "(uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  )" ( (comma_expression "uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))" (assignment_expression "uVar12 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) , (binary_expression "SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))" (call_expression "SCARRY8(uVar13,1)" identifier (argument_list "(uVar13,1)" ( identifier , number_literal ))) || (parenthesized_expression "(lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))" ( (comma_expression "lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)" (assignment_expression "lVar21 = uVar12 * 0x10" identifier = (binary_expression "uVar12 * 0x10" identifier * number_literal)) , (binary_expression "SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816(lVar21)" identifier (argument_list "(lVar21)" ( identifier ))) != (binary_expression "SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816((long)uVar12)" identifier (argument_list "((long)uVar12)" ( (cast_expression "(long)uVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) * (call_expression "SEXT816(0x10)" identifier (argument_list "(0x10)" ( number_literal )))))) )))) )) ))) )) (goto_statement "goto LAB_00114c1c;" goto statement_identifier ;)) (expression_statement "puVar10 = (ulong *)FUN_00120d00(__src,lVar21);" (assignment_expression "puVar10 = (ulong *)FUN_00120d00(__src,lVar21)" identifier = (cast_expression "(ulong *)FUN_00120d00(__src,lVar21)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00120d00(__src,lVar21)" identifier (argument_list "(__src,lVar21)" ( identifier , identifier ))))) ;) (expression_statement "lVar21 = *(long *)(param_2 + 0x370);" (assignment_expression "lVar21 = *(long *)(param_2 + 0x370)" identifier = (pointer_expression "*(long *)(param_2 + 0x370)" * (cast_expression "(long *)(param_2 + 0x370)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x370)" ( (binary_expression "param_2 + 0x370" identifier + number_literal) ))))) ;) (expression_statement "local_f8 = lVar7 + *(long *)(param_2 + 0x358);" (assignment_expression "local_f8 = lVar7 + *(long *)(param_2 + 0x358)" identifier = (binary_expression "lVar7 + *(long *)(param_2 + 0x358)" identifier + (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))))) ;) (expression_statement "lVar26 = *(long *)(local_f8 + 8);" (assignment_expression "lVar26 = *(long *)(local_f8 + 8)" identifier = (pointer_expression "*(long *)(local_f8 + 8)" * (cast_expression "(long *)(local_f8 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_f8 + 8)" ( (binary_expression "local_f8 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "__src = puVar10 + lVar25 * 2;" (assignment_expression "__src = puVar10 + lVar25 * 2" identifier = (binary_expression "puVar10 + lVar25 * 2" identifier + (binary_expression "lVar25 * 2" identifier * number_literal))) ;) (expression_statement "uVar13 = uVar12;" (assignment_expression "uVar13 = uVar12" identifier = identifier) ;) (if_statement "if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }" if (parenthesized_expression "(lVar25 < lVar8)" ( (binary_expression "lVar25 < lVar8" identifier < identifier) )) (compound_statement "{\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }" { (expression_statement "memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);" (call_expression "memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10)" identifier (argument_list "(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10)" ( (binary_expression "puVar10 + lVar25 * 2 + 2" (binary_expression "puVar10 + lVar25 * 2" identifier + (binary_expression "lVar25 * 2" identifier * number_literal)) + number_literal) , identifier , (binary_expression "(lVar8 - lVar25) * 0x10" (parenthesized_expression "(lVar8 - lVar25)" ( (binary_expression "lVar8 - lVar25" identifier - identifier) )) * number_literal) ))) ;) })) }))) (expression_statement "*__src = uVar22;" (assignment_expression "*__src = uVar22" (pointer_expression "*__src" * identifier) = identifier) ;) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) (expression_statement "*(uint *)(__src + 1) = uVar23;" (assignment_expression "*(uint *)(__src + 1) = uVar23" (pointer_expression "*(uint *)(__src + 1)" * (cast_expression "(uint *)(__src + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__src + 1)" ( (binary_expression "__src + 1" identifier + number_literal) )))) = identifier) ;) (expression_statement "__src = puVar10;" (assignment_expression "__src = puVar10" identifier = identifier) ;) (labeled_statement "LAB_00114119:\n          uVar32 = uVar32 + 1;" statement_identifier : (expression_statement "uVar32 = uVar32 + 1;" (assignment_expression "uVar32 = uVar32 + 1" identifier = (binary_expression "uVar32 + 1" identifier + number_literal)) ;)) (expression_statement "plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);" (assignment_expression "plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" identifier = (cast_expression "(long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" ( (binary_expression "lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18" identifier + (binary_expression "*(long *)(lVar26 + local_100 * 0x10) * 0x18" (pointer_expression "*(long *)(lVar26 + local_100 * 0x10)" * (cast_expression "(long *)(lVar26 + local_100 * 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar26 + local_100 * 0x10)" ( (binary_expression "lVar26 + local_100 * 0x10" identifier + (binary_expression "local_100 * 0x10" identifier * number_literal)) )))) * number_literal)) )))) ;) }) while (parenthesized_expression "(uVar32 < (ulong)plVar15[1])" ( (binary_expression "uVar32 < (ulong)plVar15[1]" identifier < (cast_expression "(ulong)plVar15[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "plVar15[1]" identifier [ number_literal ]))) )) ;) (expression_statement "uVar22 = *(ulong *)(local_f8 + 0x10);" (assignment_expression "uVar22 = *(ulong *)(local_f8 + 0x10)" identifier = (pointer_expression "*(ulong *)(local_f8 + 0x10)" * (cast_expression "(ulong *)(local_f8 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_f8 + 0x10)" ( (binary_expression "local_f8 + 0x10" identifier + number_literal) ))))) ;) })) (expression_statement "local_100 = local_100 + 1;" (assignment_expression "local_100 = local_100 + 1" identifier = (binary_expression "local_100 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_100 < uVar22)" ( (binary_expression "local_100 < uVar22" identifier < identifier) )) ;) }))) (expression_statement "uVar13 = *(ulong *)(param_2 + 0x300);" (assignment_expression "uVar13 = *(ulong *)(param_2 + 0x300)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x300)" * (cast_expression "(ulong *)(param_2 + 0x300)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x300)" ( (binary_expression "param_2 + 0x300" identifier + number_literal) ))))) ;) (if_statement "if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) goto LAB_00114c1c;" if (parenthesized_expression "(((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0))" ( (binary_expression "((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)" (parenthesized_expression "((long)(uVar13 << 4) < 0)" ( (binary_expression "(long)(uVar13 << 4) < 0" (cast_expression "(long)(uVar13 << 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar13 << 4)" ( (binary_expression "uVar13 << 4" identifier << number_literal) ))) < number_literal) )) || (parenthesized_expression "(uVar13 >> 0x3c != 0)" ( (binary_expression "uVar13 >> 0x3c != 0" (binary_expression "uVar13 >> 0x3c" identifier >> number_literal) != number_literal) ))) )) (goto_statement "goto LAB_00114c1c;" goto statement_identifier ;)) (expression_statement "local_c8 = (long *)FUN_00120ce0();" (assignment_expression "local_c8 = (long *)FUN_00120ce0()" identifier = (cast_expression "(long *)FUN_00120ce0()" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00120ce0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_88._8_4_ = 0xffffffff;" (assignment_expression "local_88._8_4_ = 0xffffffff" (field_expression "local_88._8_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "local_88._0_8_ = 0xffffffffffffffff;" (assignment_expression "local_88._0_8_ = 0xffffffffffffffff" (field_expression "local_88._0_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "local_88._12_4_ = 0xffffffff;" (assignment_expression "local_88._12_4_ = 0xffffffff" (field_expression "local_88._12_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (expression_statement "local_78 = local_88;" (assignment_expression "local_78 = local_88" identifier = identifier) ;) (expression_statement "local_b8 = uVar13;" (assignment_expression "local_b8 = uVar13" identifier = identifier) ;) (if_statement "if (lVar8 != 0) {\n    lVar21 = 0;\n    uVar23 = (uint)(param_3 >> 6);\n    uVar13 = 1L << (param_3 & 0x3f);\n    puVar10 = __src;\n    do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);\n  }" if (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) (compound_statement "{\n    lVar21 = 0;\n    uVar23 = (uint)(param_3 >> 6);\n    uVar13 = 1L << (param_3 & 0x3f);\n    puVar10 = __src;\n    do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);\n  }" { (expression_statement "lVar21 = 0;" (assignment_expression "lVar21 = 0" identifier = number_literal) ;) (expression_statement "uVar23 = (uint)(param_3 >> 6);" (assignment_expression "uVar23 = (uint)(param_3 >> 6)" identifier = (call_expression "(uint)(param_3 >> 6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 >> 6)" ( (binary_expression "param_3 >> 6" identifier >> number_literal) )))) ;) (expression_statement "uVar13 = 1L << (param_3 & 0x3f);" (assignment_expression "uVar13 = 1L << (param_3 & 0x3f)" identifier = (binary_expression "1L << (param_3 & 0x3f)" number_literal << (parenthesized_expression "(param_3 & 0x3f)" ( (binary_expression "param_3 & 0x3f" identifier & number_literal) )))) ;) (expression_statement "puVar10 = __src;" (assignment_expression "puVar10 = __src" identifier = identifier) ;) (do_statement "do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);" do (compound_statement "{\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    }" { (while_statement "while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }" { (expression_statement "uVar22 = *puVar10;" (assignment_expression "uVar22 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "uVar32 = puVar10[1];" (assignment_expression "uVar32 = puVar10[1]" identifier = (subscript_expression "puVar10[1]" identifier [ number_literal ])) ;) (expression_statement "uVar19 = (uint)puVar10[1];" (assignment_expression "uVar19 = (uint)puVar10[1]" identifier = (cast_expression "(uint)puVar10[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar10[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);" (assignment_expression "uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8)" identifier = (pointer_expression "*(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8)" * (cast_expression "(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x2e0) + uVar22 * 8)" ( (binary_expression "*(long *)(param_2 + 0x2e0) + uVar22 * 8" (pointer_expression "*(long *)(param_2 + 0x2e0)" * (cast_expression "(long *)(param_2 + 0x2e0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x2e0)" ( (binary_expression "param_2 + 0x2e0" identifier + number_literal) )))) + (binary_expression "uVar22 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (uVar12 < 0x100) break;" if (parenthesized_expression "(uVar12 < 0x100)" ( (binary_expression "uVar12 < 0x100" identifier < number_literal) )) (break_statement "break;" break ;)) (if_statement "if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }" if (parenthesized_expression "((long)uVar12 < 0x114)" ( (binary_expression "(long)uVar12 < 0x114" (cast_expression "(long)uVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }" { (if_statement "if (uVar12 != 0x10a) goto LAB_0011435a;" if (parenthesized_expression "(uVar12 != 0x10a)" ( (binary_expression "uVar12 != 0x10a" identifier != number_literal) )) (goto_statement "goto LAB_0011435a;" goto statement_identifier ;)) (expression_statement "lVar26 = lVar7 + *(long *)(param_2 + 0x358);" (assignment_expression "lVar26 = lVar7 + *(long *)(param_2 + 0x358)" identifier = (binary_expression "lVar7 + *(long *)(param_2 + 0x358)" identifier + (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))))) ;) (expression_statement "pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));" (assignment_expression "pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250))" identifier = (cast_expression "(undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250))" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250))" ( (binary_expression "*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250)" (binary_expression "*(long *)(param_2 + 0x268) * 0x20" (pointer_expression "*(long *)(param_2 + 0x268)" * (cast_expression "(long *)(param_2 + 0x268)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x268)" ( (binary_expression "param_2 + 0x268" identifier + number_literal) )))) * number_literal) + (pointer_expression "*(long *)(param_2 + 0x250)" * (cast_expression "(long *)(param_2 + 0x250)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x250)" ( (binary_expression "param_2 + 0x250" identifier + number_literal) ))))) )))) ;) (expression_statement "local_68 = *pauVar14;" (assignment_expression "local_68 = *pauVar14" identifier = (pointer_expression "*pauVar14" * identifier)) ;) (expression_statement "local_58 = pauVar14[1];" (assignment_expression "local_58 = pauVar14[1]" identifier = (subscript_expression "pauVar14[1]" identifier [ number_literal ])) ;) (expression_statement "bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;" (assignment_expression "bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1" identifier = (binary_expression "(byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1" (call_expression "(byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f))" ( (binary_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)" (pointer_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8)" * (cast_expression "(ulong *)(local_68 + (ulong)uVar23 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_68 + (ulong)uVar23 * 8)" ( (binary_expression "local_68 + (ulong)uVar23 * 8" identifier + (binary_expression "(ulong)uVar23 * 8" (cast_expression "(ulong)uVar23" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) )))) >> (parenthesized_expression "(param_3 & 0x3f)" ( (binary_expression "param_3 & 0x3f" identifier & number_literal) ))) ))) & number_literal)) ;) (if_statement "if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }" if (parenthesized_expression "((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0)" ( (binary_expression "(*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0" (parenthesized_expression "(*(byte *)(lVar26 + 0x20) & uVar19 & 7)" ( (binary_expression "*(byte *)(lVar26 + 0x20) & uVar19 & 7" (binary_expression "*(byte *)(lVar26 + 0x20) & uVar19" (pointer_expression "*(byte *)(lVar26 + 0x20)" * (cast_expression "(byte *)(lVar26 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar26 + 0x20)" ( (binary_expression "lVar26 + 0x20" identifier + number_literal) )))) & identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }" { (if_statement "if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }" if (parenthesized_expression "(*(long *)(lVar26 + 0x38) == 0)" ( (binary_expression "*(long *)(lVar26 + 0x38) == 0" (pointer_expression "*(long *)(lVar26 + 0x38)" * (cast_expression "(long *)(lVar26 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar26 + 0x38)" ( (binary_expression "lVar26 + 0x38" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }" { (expression_statement "uVar16 = FUN_00120ce0(0x10);" (assignment_expression "uVar16 = FUN_00120ce0(0x10)" identifier = (call_expression "FUN_00120ce0(0x10)" identifier (argument_list "(0x10)" ( number_literal )))) ;) (expression_statement "uVar5 = _UNK_001282a8;" (assignment_expression "uVar5 = _UNK_001282a8" identifier = identifier) ;) (expression_statement "uVar4 = _DAT_001282a0;" (assignment_expression "uVar4 = _DAT_001282a0" identifier = identifier) ;) (expression_statement "*(undefined8 *)(lVar26 + 0x30) = uVar16;" (assignment_expression "*(undefined8 *)(lVar26 + 0x30) = uVar16" (pointer_expression "*(undefined8 *)(lVar26 + 0x30)" * (cast_expression "(undefined8 *)(lVar26 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar26 + 0x30)" ( (binary_expression "lVar26 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(lVar26 + 0x38) = uVar4;" (assignment_expression "*(undefined8 *)(lVar26 + 0x38) = uVar4" (pointer_expression "*(undefined8 *)(lVar26 + 0x38)" * (cast_expression "(undefined8 *)(lVar26 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar26 + 0x38)" ( (binary_expression "lVar26 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(lVar26 + 0x40) = uVar5;" (assignment_expression "*(undefined8 *)(lVar26 + 0x40) = uVar5" (pointer_expression "*(undefined8 *)(lVar26 + 0x40)" * (cast_expression "(undefined8 *)(lVar26 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar26 + 0x40)" ( (binary_expression "lVar26 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "lVar26 = lVar7 + *(long *)(param_2 + 0x358);" (assignment_expression "lVar26 = lVar7 + *(long *)(param_2 + 0x358)" identifier = (binary_expression "lVar7 + *(long *)(param_2 + 0x358)" identifier + (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))))) ;) })) (expression_statement "FUN_00112200(uVar22,uVar32,lVar26 + 0x30);" (call_expression "FUN_00112200(uVar22,uVar32,lVar26 + 0x30)" identifier (argument_list "(uVar22,uVar32,lVar26 + 0x30)" ( identifier , identifier , (binary_expression "lVar26 + 0x30" identifier + number_literal) ))) ;) })) (expression_statement "uVar12 = local_68._0_8_;" (assignment_expression "uVar12 = local_68._0_8_" identifier = (field_expression "local_68._0_8_" identifier . field_identifier)) ;) (expression_statement "uVar27 = local_58._0_8_;" (assignment_expression "uVar27 = local_58._0_8_" identifier = (field_expression "local_58._0_8_" identifier . field_identifier)) ;) (expression_statement "uVar29 = local_68._8_8_;" (assignment_expression "uVar29 = local_68._8_8_" identifier = (field_expression "local_68._8_8_" identifier . field_identifier)) ;) (expression_statement "uVar30 = local_58._8_8_;" (assignment_expression "uVar30 = local_58._8_8_" identifier = (field_expression "local_58._8_8_" identifier . field_identifier)) ;) (if_statement "if (uVar19 != 0x1ff) goto LAB_0011485e;" if (parenthesized_expression "(uVar19 != 0x1ff)" ( (binary_expression "uVar19 != 0x1ff" identifier != number_literal) )) (goto_statement "goto LAB_0011485e;" goto statement_identifier ;)) (labeled_statement "LAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;" statement_identifier : (if_statement "if (bVar18 != 0) goto LAB_00114267;" if (parenthesized_expression "(bVar18 != 0)" ( (binary_expression "bVar18 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00114267;" goto statement_identifier ;))) }) (else_clause "else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }" else (compound_statement "{\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }" { (expression_statement "lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);" (assignment_expression "lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250)" identifier = (binary_expression "uVar12 * 0x20 + *(long *)(param_2 + 0x250)" (binary_expression "uVar12 * 0x20" identifier * number_literal) + (pointer_expression "*(long *)(param_2 + 0x250)" * (cast_expression "(long *)(param_2 + 0x250)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x250)" ( (binary_expression "param_2 + 0x250" identifier + number_literal) )))))) ;) (expression_statement "local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);" (assignment_expression "local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280)" identifier = (pointer_expression "*(undefined1 (*) [16])(lVar26 + -0x2280)" * (cast_expression "(undefined1 (*) [16])(lVar26 + -0x2280)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(lVar26 + -0x2280)" ( (binary_expression "lVar26 + -0x2280" identifier + number_literal) ))))) ;) (expression_statement "local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);" (assignment_expression "local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270)" identifier = (pointer_expression "*(undefined1 (*) [16])(lVar26 + -0x2270)" * (cast_expression "(undefined1 (*) [16])(lVar26 + -0x2270)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(lVar26 + -0x2270)" ( (binary_expression "lVar26 + -0x2270" identifier + number_literal) ))))) ;) (if_statement "if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;" if (parenthesized_expression "((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0)" ( (binary_expression "(*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0" (parenthesized_expression "(*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13)" ( (binary_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13" (pointer_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8)" * (cast_expression "(ulong *)(local_68 + (ulong)uVar23 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_68 + (ulong)uVar23 * 8)" ( (binary_expression "local_68 + (ulong)uVar23 * 8" identifier + (binary_expression "(ulong)uVar23 * 8" (cast_expression "(ulong)uVar23" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) )))) & identifier) )) != number_literal) )) (goto_statement "goto LAB_0011423a;" goto statement_identifier ;)) (labeled_statement "LAB_0011482f:\n          bVar18 = 0;" statement_identifier : (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" identifier = number_literal) ;)) (expression_statement "uVar12 = local_68._0_8_;" (assignment_expression "uVar12 = local_68._0_8_" identifier = (field_expression "local_68._0_8_" identifier . field_identifier)) ;) (expression_statement "uVar27 = local_58._0_8_;" (assignment_expression "uVar27 = local_58._0_8_" identifier = (field_expression "local_58._0_8_" identifier . field_identifier)) ;) (expression_statement "uVar29 = local_68._8_8_;" (assignment_expression "uVar29 = local_68._8_8_" identifier = (field_expression "local_68._8_8_" identifier . field_identifier)) ;) (expression_statement "uVar30 = local_58._8_8_;" (assignment_expression "uVar30 = local_58._8_8_" identifier = (field_expression "local_58._8_8_" identifier . field_identifier)) ;) (if_statement "if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }" if (parenthesized_expression "(uVar19 != 0x1ff)" ( (binary_expression "uVar19 != 0x1ff" identifier != number_literal) )) (compound_statement "{\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }" { (labeled_statement "LAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);" statement_identifier : (expression_statement "bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);" (assignment_expression "bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7)" identifier = (pointer_expression "*(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7)" * (cast_expression "(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x358) + 0x20 + lVar7)" ( (binary_expression "*(long *)(param_2 + 0x358) + 0x20 + lVar7" (binary_expression "*(long *)(param_2 + 0x358) + 0x20" (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))) + number_literal) + identifier) ))))) ;)) (expression_statement "uVar12 = local_68._0_8_;" (assignment_expression "uVar12 = local_68._0_8_" identifier = (field_expression "local_68._0_8_" identifier . field_identifier)) ;) (expression_statement "uVar27 = local_58._0_8_;" (assignment_expression "uVar27 = local_58._0_8_" identifier = (field_expression "local_58._0_8_" identifier . field_identifier)) ;) (expression_statement "uVar29 = local_68._8_8_;" (assignment_expression "uVar29 = local_68._8_8_" identifier = (field_expression "local_68._8_8_" identifier . field_identifier)) ;) (expression_statement "uVar30 = local_58._8_8_;" (assignment_expression "uVar30 = local_58._8_8_" identifier = (field_expression "local_58._8_8_" identifier . field_identifier)) ;) (if_statement "if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" if (parenthesized_expression "(((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0)" ( (binary_expression "((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0" (parenthesized_expression "((int)uVar19 >> 6 & (uint)bVar2 & 7)" ( (binary_expression "(int)uVar19 >> 6 & (uint)bVar2 & 7" (binary_expression "(int)uVar19 >> 6 & (uint)bVar2" (binary_expression "(int)uVar19 >> 6" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" { (expression_statement "uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);" (assignment_expression "uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230)" identifier = (binary_expression "local_68._0_8_ & ~*(ulong *)(param_2 + 0x230)" (field_expression "local_68._0_8_" identifier . field_identifier) & (unary_expression "~*(ulong *)(param_2 + 0x230)" ~ (pointer_expression "*(ulong *)(param_2 + 0x230)" * (cast_expression "(ulong *)(param_2 + 0x230)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x230)" ( (binary_expression "param_2 + 0x230" identifier + number_literal) ))))))) ;) (expression_statement "uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);" (assignment_expression "uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238)" identifier = (binary_expression "local_68._8_8_ & ~*(ulong *)(param_2 + 0x238)" (field_expression "local_68._8_8_" identifier . field_identifier) & (unary_expression "~*(ulong *)(param_2 + 0x238)" ~ (pointer_expression "*(ulong *)(param_2 + 0x238)" * (cast_expression "(ulong *)(param_2 + 0x238)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x238)" ( (binary_expression "param_2 + 0x238" identifier + number_literal) ))))))) ;) (expression_statement "local_68._8_8_ = uVar29;" (assignment_expression "local_68._8_8_ = uVar29" (field_expression "local_68._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "local_68._0_8_ = uVar12;" (assignment_expression "local_68._0_8_ = uVar12" (field_expression "local_68._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);" (assignment_expression "uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240)" identifier = (binary_expression "local_58._0_8_ & ~*(ulong *)(param_2 + 0x240)" (field_expression "local_58._0_8_" identifier . field_identifier) & (unary_expression "~*(ulong *)(param_2 + 0x240)" ~ (pointer_expression "*(ulong *)(param_2 + 0x240)" * (cast_expression "(ulong *)(param_2 + 0x240)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x240)" ( (binary_expression "param_2 + 0x240" identifier + number_literal) ))))))) ;) (expression_statement "uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);" (assignment_expression "uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248)" identifier = (binary_expression "local_58._8_8_ & ~*(ulong *)(param_2 + 0x248)" (field_expression "local_58._8_8_" identifier . field_identifier) & (unary_expression "~*(ulong *)(param_2 + 0x248)" ~ (pointer_expression "*(ulong *)(param_2 + 0x248)" * (cast_expression "(ulong *)(param_2 + 0x248)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x248)" ( (binary_expression "param_2 + 0x248" identifier + number_literal) ))))))) ;) (expression_statement "local_58._8_8_ = uVar30;" (assignment_expression "local_58._8_8_ = uVar30" (field_expression "local_58._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "local_58._0_8_ = uVar27;" (assignment_expression "local_58._0_8_ = uVar27" (field_expression "local_58._0_8_" identifier . field_identifier) = identifier) ;) })) (if_statement "if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" if (parenthesized_expression "(((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0)" ( (binary_expression "((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0" (parenthesized_expression "((int)uVar19 >> 3 & (uint)bVar2 & 7)" ( (binary_expression "(int)uVar19 >> 3 & (uint)bVar2 & 7" (binary_expression "(int)uVar19 >> 3 & (uint)bVar2" (binary_expression "(int)uVar19 >> 3" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" { (expression_statement "uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);" (assignment_expression "uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210)" identifier = (binary_expression "uVar12 & ~*(ulong *)(param_2 + 0x210)" identifier & (unary_expression "~*(ulong *)(param_2 + 0x210)" ~ (pointer_expression "*(ulong *)(param_2 + 0x210)" * (cast_expression "(ulong *)(param_2 + 0x210)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x210)" ( (binary_expression "param_2 + 0x210" identifier + number_literal) ))))))) ;) (expression_statement "uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);" (assignment_expression "uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218)" identifier = (binary_expression "uVar29 & ~*(ulong *)(param_2 + 0x218)" identifier & (unary_expression "~*(ulong *)(param_2 + 0x218)" ~ (pointer_expression "*(ulong *)(param_2 + 0x218)" * (cast_expression "(ulong *)(param_2 + 0x218)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x218)" ( (binary_expression "param_2 + 0x218" identifier + number_literal) ))))))) ;) (expression_statement "local_68._8_8_ = uVar29;" (assignment_expression "local_68._8_8_ = uVar29" (field_expression "local_68._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "local_68._0_8_ = uVar12;" (assignment_expression "local_68._0_8_ = uVar12" (field_expression "local_68._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);" (assignment_expression "uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220)" identifier = (binary_expression "uVar27 & ~*(ulong *)(param_2 + 0x220)" identifier & (unary_expression "~*(ulong *)(param_2 + 0x220)" ~ (pointer_expression "*(ulong *)(param_2 + 0x220)" * (cast_expression "(ulong *)(param_2 + 0x220)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x220)" ( (binary_expression "param_2 + 0x220" identifier + number_literal) ))))))) ;) (expression_statement "uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);" (assignment_expression "uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228)" identifier = (binary_expression "uVar30 & ~*(ulong *)(param_2 + 0x228)" identifier & (unary_expression "~*(ulong *)(param_2 + 0x228)" ~ (pointer_expression "*(ulong *)(param_2 + 0x228)" * (cast_expression "(ulong *)(param_2 + 0x228)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x228)" ( (binary_expression "param_2 + 0x228" identifier + number_literal) ))))))) ;) (expression_statement "local_58._8_8_ = uVar30;" (assignment_expression "local_58._8_8_ = uVar30" (field_expression "local_58._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "local_58._0_8_ = uVar27;" (assignment_expression "local_58._0_8_ = uVar27" (field_expression "local_58._0_8_" identifier . field_identifier) = identifier) ;) })) (if_statement "if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" if (parenthesized_expression "((uVar19 & bVar2 & 7) == 0)" ( (binary_expression "(uVar19 & bVar2 & 7) == 0" (parenthesized_expression "(uVar19 & bVar2 & 7)" ( (binary_expression "uVar19 & bVar2 & 7" (binary_expression "uVar19 & bVar2" identifier & identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" { (expression_statement "uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));" (assignment_expression "uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230))" identifier = (binary_expression "uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230))" identifier & (parenthesized_expression "(*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230))" ( (binary_expression "*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230)" (pointer_expression "*(ulong *)(param_2 + 0x210)" * (cast_expression "(ulong *)(param_2 + 0x210)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x210)" ( (binary_expression "param_2 + 0x210" identifier + number_literal) )))) | (pointer_expression "*(ulong *)(param_2 + 0x230)" * (cast_expression "(ulong *)(param_2 + 0x230)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x230)" ( (binary_expression "param_2 + 0x230" identifier + number_literal) ))))) )))) ;) (expression_statement "uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));" (assignment_expression "uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238))" identifier = (binary_expression "uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238))" identifier & (parenthesized_expression "(*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238))" ( (binary_expression "*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238)" (pointer_expression "*(ulong *)(param_2 + 0x218)" * (cast_expression "(ulong *)(param_2 + 0x218)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x218)" ( (binary_expression "param_2 + 0x218" identifier + number_literal) )))) | (pointer_expression "*(ulong *)(param_2 + 0x238)" * (cast_expression "(ulong *)(param_2 + 0x238)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x238)" ( (binary_expression "param_2 + 0x238" identifier + number_literal) ))))) )))) ;) (expression_statement "uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));" (assignment_expression "uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240))" identifier = (binary_expression "uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240))" identifier & (parenthesized_expression "(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240))" ( (binary_expression "*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)" (pointer_expression "*(ulong *)(param_2 + 0x220)" * (cast_expression "(ulong *)(param_2 + 0x220)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x220)" ( (binary_expression "param_2 + 0x220" identifier + number_literal) )))) | (pointer_expression "*(ulong *)(param_2 + 0x240)" * (cast_expression "(ulong *)(param_2 + 0x240)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x240)" ( (binary_expression "param_2 + 0x240" identifier + number_literal) ))))) )))) ;) (expression_statement "local_68._8_8_ = uVar29;" (assignment_expression "local_68._8_8_ = uVar29" (field_expression "local_68._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "local_68._0_8_ = uVar12;" (assignment_expression "local_68._0_8_ = uVar12" (field_expression "local_68._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));" (assignment_expression "uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248))" identifier = (binary_expression "uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248))" identifier & (parenthesized_expression "(*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248))" ( (binary_expression "*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248)" (pointer_expression "*(ulong *)(param_2 + 0x228)" * (cast_expression "(ulong *)(param_2 + 0x228)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x228)" ( (binary_expression "param_2 + 0x228" identifier + number_literal) )))) | (pointer_expression "*(ulong *)(param_2 + 0x248)" * (cast_expression "(ulong *)(param_2 + 0x248)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x248)" ( (binary_expression "param_2 + 0x248" identifier + number_literal) ))))) )))) ;) (expression_statement "local_58._8_8_ = uVar30;" (assignment_expression "local_58._8_8_ = uVar30" (field_expression "local_58._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "local_58._0_8_ = uVar27;" (assignment_expression "local_58._0_8_ = uVar27" (field_expression "local_58._0_8_" identifier . field_identifier) = identifier) ;) })) (if_statement "if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;" if (parenthesized_expression "(((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0)" ( (binary_expression "((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0" (parenthesized_expression "((uVar12 == 0 && uVar29 == 0) && uVar27 == 0)" ( (binary_expression "(uVar12 == 0 && uVar29 == 0) && uVar27 == 0" (parenthesized_expression "(uVar12 == 0 && uVar29 == 0)" ( (binary_expression "uVar12 == 0 && uVar29 == 0" (binary_expression "uVar12 == 0" identifier == number_literal) && (binary_expression "uVar29 == 0" identifier == number_literal)) )) && (binary_expression "uVar27 == 0" identifier == number_literal)) )) && (binary_expression "uVar30 == 0" identifier == number_literal)) )) (goto_statement "goto LAB_0011435a;" goto statement_identifier ;)) (if_statement "if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;" if (parenthesized_expression "((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0)" ( (binary_expression "(*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0" (parenthesized_expression "(*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13)" ( (binary_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13" (pointer_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8)" * (cast_expression "(ulong *)(local_68 + (ulong)uVar23 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_68 + (ulong)uVar23 * 8)" ( (binary_expression "local_68 + (ulong)uVar23 * 8" identifier + (binary_expression "(ulong)uVar23 * 8" (cast_expression "(ulong)uVar23" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) )))) & identifier) )) != number_literal) )) (goto_statement "goto LAB_0011445b;" goto statement_identifier ;)) })) }))) (expression_statement "lVar21 = lVar21 + 1;" (assignment_expression "lVar21 = lVar21 + 1" identifier = (binary_expression "lVar21 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar10 + 2;" (assignment_expression "puVar10 = puVar10 + 2" identifier = (binary_expression "puVar10 + 2" identifier + number_literal)) ;) (expression_statement "auVar35._8_8_ = uVar30;" (assignment_expression "auVar35._8_8_ = uVar30" (field_expression "auVar35._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar35._0_8_ = uVar27;" (assignment_expression "auVar35._0_8_ = uVar27" (field_expression "auVar35._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "local_78 = ~auVar35 & local_78;" (assignment_expression "local_78 = ~auVar35 & local_78" identifier = (binary_expression "~auVar35 & local_78" (unary_expression "~auVar35" ~ identifier) & identifier)) ;) (expression_statement "local_88._8_8_ = ~uVar29 & local_88._8_8_;" (assignment_expression "local_88._8_8_ = ~uVar29 & local_88._8_8_" (field_expression "local_88._8_8_" identifier . field_identifier) = (binary_expression "~uVar29 & local_88._8_8_" (unary_expression "~uVar29" ~ identifier) & (field_expression "local_88._8_8_" identifier . field_identifier))) ;) (expression_statement "local_88._0_8_ = ~uVar12 & local_88._0_8_;" (assignment_expression "local_88._0_8_ = ~uVar12 & local_88._0_8_" (field_expression "local_88._0_8_" identifier . field_identifier) = (binary_expression "~uVar12 & local_88._0_8_" (unary_expression "~uVar12" ~ identifier) & (field_expression "local_88._0_8_" identifier . field_identifier))) ;) (if_statement "if (lVar21 == lVar8) goto LAB_001144c5;" if (parenthesized_expression "(lVar21 == lVar8)" ( (binary_expression "lVar21 == lVar8" identifier == identifier) )) (goto_statement "goto LAB_001144c5;" goto statement_identifier ;)) })) (expression_statement "local_68 = (undefined1  [16])0x0;" (assignment_expression "local_68 = (undefined1  [16])0x0" identifier = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "local_58 = (undefined1  [16])0x0;" (assignment_expression "local_58 = (undefined1  [16])0x0" identifier = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "*(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);" (assignment_expression "*(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f)" (pointer_expression "*(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8)" * (cast_expression "(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8)" ( (binary_expression "local_68 + (uVar12 >> 6 & 0x3ffffff) * 8" identifier + (binary_expression "(uVar12 >> 6 & 0x3ffffff) * 8" (parenthesized_expression "(uVar12 >> 6 & 0x3ffffff)" ( (binary_expression "uVar12 >> 6 & 0x3ffffff" (binary_expression "uVar12 >> 6" identifier >> number_literal) & number_literal) )) * number_literal)) )))) = (binary_expression "1L << ((byte)uVar12 & 0x3f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x3f)" ( (binary_expression "(byte)uVar12 & 0x3f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if (uVar12 != param_3) goto LAB_0011482f;" if (parenthesized_expression "(uVar12 != param_3)" ( (binary_expression "uVar12 != param_3" identifier != identifier) )) (goto_statement "goto LAB_0011482f;" goto statement_identifier ;)) (labeled_statement "LAB_0011423a:\n      uVar12 = local_68._0_8_;" statement_identifier : (expression_statement "uVar12 = local_68._0_8_;" (assignment_expression "uVar12 = local_68._0_8_" identifier = (field_expression "local_68._0_8_" identifier . field_identifier)) ;)) (expression_statement "uVar27 = local_58._0_8_;" (assignment_expression "uVar27 = local_58._0_8_" identifier = (field_expression "local_58._0_8_" identifier . field_identifier)) ;) (expression_statement "uVar29 = local_68._8_8_;" (assignment_expression "uVar29 = local_68._8_8_" identifier = (field_expression "local_68._8_8_" identifier . field_identifier)) ;) (expression_statement "uVar30 = local_58._8_8_;" (assignment_expression "uVar30 = local_58._8_8_" identifier = (field_expression "local_58._8_8_" identifier . field_identifier)) ;) (if_statement "if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }" if (parenthesized_expression "(uVar19 != 0x1ff)" ( (binary_expression "uVar19 != 0x1ff" identifier != number_literal) )) (compound_statement "{\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }" { (expression_statement "bVar18 = 1;" (assignment_expression "bVar18 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0011485e;" goto statement_identifier ;) })) (labeled_statement "LAB_00114267:\n      uVar6 = local_b8;" statement_identifier : (expression_statement "uVar6 = local_b8;" (assignment_expression "uVar6 = local_b8" identifier = identifier) ;)) (expression_statement "auVar34._8_8_ = uVar30;" (assignment_expression "auVar34._8_8_ = uVar30" (field_expression "auVar34._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar34._0_8_ = uVar27;" (assignment_expression "auVar34._0_8_ = uVar27" (field_expression "auVar34._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "local_78 = auVar34 & local_78;" (assignment_expression "local_78 = auVar34 & local_78" identifier = (binary_expression "auVar34 & local_78" identifier & identifier)) ;) (expression_statement "local_88._8_8_ = uVar29 & local_88._8_8_;" (assignment_expression "local_88._8_8_ = uVar29 & local_88._8_8_" (field_expression "local_88._8_8_" identifier . field_identifier) = (binary_expression "uVar29 & local_88._8_8_" identifier & (field_expression "local_88._8_8_" identifier . field_identifier))) ;) (expression_statement "local_88._0_8_ = uVar12 & local_88._0_8_;" (assignment_expression "local_88._0_8_ = uVar12 & local_88._0_8_" (field_expression "local_88._0_8_" identifier . field_identifier) = (binary_expression "uVar12 & local_88._0_8_" identifier & (field_expression "local_88._0_8_" identifier . field_identifier))) ;) (if_statement "if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }" if (parenthesized_expression "((long)local_b8 <= local_c0)" ( (binary_expression "(long)local_b8 <= local_c0" (cast_expression "(long)local_b8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) <= identifier) )) (compound_statement "{\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }" { (expression_statement "uVar12 = ((long)local_b8 >> 1) + local_b8;" (assignment_expression "uVar12 = ((long)local_b8 >> 1) + local_b8" identifier = (binary_expression "((long)local_b8 >> 1) + local_b8" (parenthesized_expression "((long)local_b8 >> 1)" ( (binary_expression "(long)local_b8 >> 1" (cast_expression "(long)local_b8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )) + identifier)) ;) (if_statement "if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }" if (parenthesized_expression "((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))" ( (binary_expression "(SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" (parenthesized_expression "(SCARRY8((long)local_b8 >> 1,local_b8))" ( (call_expression "SCARRY8((long)local_b8 >> 1,local_b8)" identifier (argument_list "((long)local_b8 >> 1,local_b8)" ( (binary_expression "(long)local_b8 >> 1" (cast_expression "(long)local_b8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) , identifier ))) )) || (parenthesized_expression "(lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" ( (comma_expression "lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)" (assignment_expression "lVar26 = uVar12 * 0x10" identifier = (binary_expression "uVar12 * 0x10" identifier * number_literal)) , (binary_expression "SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816(lVar26)" identifier (argument_list "(lVar26)" ( identifier ))) != (binary_expression "SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816((long)uVar12)" identifier (argument_list "((long)uVar12)" ( (cast_expression "(long)uVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) * (call_expression "SEXT816(0x10)" identifier (argument_list "(0x10)" ( number_literal )))))) ))) )) (compound_statement "{\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }" { (expression_statement "uVar12 = 0x7ffffffffffffff;" (assignment_expression "uVar12 = 0x7ffffffffffffff" identifier = number_literal) ;) (expression_statement "lVar26 = 0x7ffffffffffffff0;" (assignment_expression "lVar26 = 0x7ffffffffffffff0" identifier = number_literal) ;) }) (else_clause "else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }" else (if_statement "if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }" if (parenthesized_expression "(lVar26 < 0x80)" ( (binary_expression "lVar26 < 0x80" identifier < number_literal) )) (compound_statement "{\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }" { (expression_statement "lVar26 = 0x80;" (assignment_expression "lVar26 = 0x80" identifier = number_literal) ;) (expression_statement "uVar12 = 8;" (assignment_expression "uVar12 = 8" identifier = number_literal) ;) })))) (if_statement "if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }" if (parenthesized_expression "(local_c8 == (long *)0x0)" ( (binary_expression "local_c8 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          local_b8 = 0;\n        }" { (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) })) (if_statement "if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;" if (parenthesized_expression "(((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))" ( (binary_expression "((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))))" (parenthesized_expression "((long)(uVar12 - uVar6) < 1)" ( (binary_expression "(long)(uVar12 - uVar6) < 1" (cast_expression "(long)(uVar12 - uVar6)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar12 - uVar6)" ( (binary_expression "uVar12 - uVar6" identifier - identifier) ))) < number_literal) )) && (parenthesized_expression "((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))))" ( (parenthesized_expression "(uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))" ( (comma_expression "uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" (assignment_expression "uVar12 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) , (binary_expression "SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" (call_expression "SCARRY8(uVar6,1)" identifier (argument_list "(uVar6,1)" ( identifier , number_literal ))) || (parenthesized_expression "(lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" ( (comma_expression "lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)" (assignment_expression "lVar26 = uVar12 * 0x10" identifier = (binary_expression "uVar12 * 0x10" identifier * number_literal)) , (binary_expression "SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816(lVar26)" identifier (argument_list "(lVar26)" ( identifier ))) != (binary_expression "SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816((long)uVar12)" identifier (argument_list "((long)uVar12)" ( (cast_expression "(long)uVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) * (call_expression "SEXT816(0x10)" identifier (argument_list "(0x10)" ( number_literal )))))) )))) )) ))) )) (goto_statement "goto LAB_00114c1c;" goto statement_identifier ;)) (expression_statement "local_c8 = (long *)FUN_00120d00(local_c8,lVar26);" (assignment_expression "local_c8 = (long *)FUN_00120d00(local_c8,lVar26)" identifier = (cast_expression "(long *)FUN_00120d00(local_c8,lVar26)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00120d00(local_c8,lVar26)" identifier (argument_list "(local_c8,lVar26)" ( identifier , identifier ))))) ;) (expression_statement "local_b8 = uVar12;" (assignment_expression "local_b8 = uVar12" identifier = identifier) ;) })) (expression_statement "local_c8[local_c0 * 2] = uVar22;" (assignment_expression "local_c8[local_c0 * 2] = uVar22" (subscript_expression "local_c8[local_c0 * 2]" identifier [ (binary_expression "local_c0 * 2" identifier * number_literal) ]) = identifier) ;) (expression_statement "*(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;" (assignment_expression "*(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32" (pointer_expression "*(int *)(local_c8 + local_c0 * 2 + 1)" * (cast_expression "(int *)(local_c8 + local_c0 * 2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_c8 + local_c0 * 2 + 1)" ( (binary_expression "local_c8 + local_c0 * 2 + 1" (binary_expression "local_c8 + local_c0 * 2" identifier + (binary_expression "local_c0 * 2" identifier * number_literal)) + number_literal) )))) = (cast_expression "(int)uVar32" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_c0 = local_c0 + 1;" (assignment_expression "local_c0 = local_c0 + 1" identifier = (binary_expression "local_c0 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_0011435a:\n      lVar21 = lVar21 + 1;" statement_identifier : (expression_statement "lVar21 = lVar21 + 1;" (assignment_expression "lVar21 = lVar21 + 1" identifier = (binary_expression "lVar21 + 1" identifier + number_literal)) ;)) (expression_statement "puVar10 = puVar10 + 2;" (assignment_expression "puVar10 = puVar10 + 2" identifier = (binary_expression "puVar10 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar21 != lVar8)" ( (binary_expression "lVar21 != lVar8" identifier != identifier) )) ;) })) (labeled_statement "LAB_001144c5:\n  uVar13 = *(ulong *)(param_2 + 0x300);" statement_identifier : (expression_statement "uVar13 = *(ulong *)(param_2 + 0x300);" (assignment_expression "uVar13 = *(ulong *)(param_2 + 0x300)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x300)" * (cast_expression "(ulong *)(param_2 + 0x300)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x300)" ( (binary_expression "param_2 + 0x300" identifier + number_literal) ))))) ;)) (if_statement "if ((long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0) goto LAB_00114c1c;" if (parenthesized_expression "((long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0)" ( (binary_expression "(long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0" (binary_expression "(long)(uVar13 << 4) < 0" (cast_expression "(long)(uVar13 << 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar13 << 4)" ( (binary_expression "uVar13 << 4" identifier << number_literal) ))) < number_literal) || (binary_expression "uVar13 >> 0x3c != 0" (binary_expression "uVar13 >> 0x3c" identifier >> number_literal) != number_literal)) )) (goto_statement "goto LAB_00114c1c;" goto statement_identifier ;)) (expression_statement "local_a8 = (void *)FUN_00120ce0();" (assignment_expression "local_a8 = (void *)FUN_00120ce0()" identifier = (cast_expression "(void *)FUN_00120ce0()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00120ce0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_a0 = 0;" (assignment_expression "local_a0 = 0" identifier = number_literal) ;) (expression_statement "local_98 = uVar13;" (assignment_expression "local_98 = uVar13" identifier = identifier) ;) (if_statement "if (local_c0 < 1) {\n    if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }\n    goto LAB_001146d6;\n  }" if (parenthesized_expression "(local_c0 < 1)" ( (binary_expression "local_c0 < 1" identifier < number_literal) )) (compound_statement "{\n    if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }\n    goto LAB_001146d6;\n  }" { (if_statement "if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }" if (parenthesized_expression "(*(char *)(param_2 + 0x378) == '\0')" ( (binary_expression "*(char *)(param_2 + 0x378) == '\0'" (pointer_expression "*(char *)(param_2 + 0x378)" * (cast_expression "(char *)(param_2 + 0x378)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x378)" ( (binary_expression "param_2 + 0x378" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }" { (expression_statement "lVar21 = -1;" (assignment_expression "lVar21 = -1" identifier = number_literal) ;) (expression_statement "lVar8 = -1;" (assignment_expression "lVar8 = -1" identifier = number_literal) ;) (expression_statement "lVar7 = lVar21;" (assignment_expression "lVar7 = lVar21" identifier = identifier) ;) }) (else_clause "else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }" else (compound_statement "{\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }" { (expression_statement "lVar8 = *(long *)(param_2 + 0x3c0);" (assignment_expression "lVar8 = *(long *)(param_2 + 0x3c0)" identifier = (pointer_expression "*(long *)(param_2 + 0x3c0)" * (cast_expression "(long *)(param_2 + 0x3c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c0)" ( (binary_expression "param_2 + 0x3c0" identifier + number_literal) ))))) ;) (expression_statement "lVar21 = 0;" (assignment_expression "lVar21 = 0" identifier = number_literal) ;) (expression_statement "lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);" (assignment_expression "lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1)" identifier = (cast_expression "(long)(*(int *)(param_2 + 0x39c) + -1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(*(int *)(param_2 + 0x39c) + -1)" ( (binary_expression "*(int *)(param_2 + 0x39c) + -1" (pointer_expression "*(int *)(param_2 + 0x39c)" * (cast_expression "(int *)(param_2 + 0x39c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x39c)" ( (binary_expression "param_2 + 0x39c" identifier + number_literal) )))) + number_literal) )))) ;) }))) (goto_statement "goto LAB_001146d6;" goto statement_identifier ;) })) (if_statement "if (*(char *)(param_2 + 0x378) != '\0') {\n    if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }\n    FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);\n    FUN_00111e00(&local_a8,&local_a0,&local_c8);\n  }" if (parenthesized_expression "(*(char *)(param_2 + 0x378) != '\0')" ( (binary_expression "*(char *)(param_2 + 0x378) != '\0'" (pointer_expression "*(char *)(param_2 + 0x378)" * (cast_expression "(char *)(param_2 + 0x378)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x378)" ( (binary_expression "param_2 + 0x378" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }\n    FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);\n    FUN_00111e00(&local_a8,&local_a0,&local_c8);\n  }" { (if_statement "if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }" if (parenthesized_expression "(*(char *)(param_2 + 0x3fc) != '\0')" ( (binary_expression "*(char *)(param_2 + 0x3fc) != '\0'" (pointer_expression "*(char *)(param_2 + 0x3fc)" * (cast_expression "(char *)(param_2 + 0x3fc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3fc)" ( (binary_expression "param_2 + 0x3fc" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }" { (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);" do (compound_statement "{\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      }" { (expression_statement "lVar21 = lVar8 + 1;" (assignment_expression "lVar21 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) (if_statement "if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;" if (parenthesized_expression "((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)" ( (binary_expression "(*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0" (parenthesized_expression "(*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1)" ( (binary_expression "*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1" (pointer_expression "*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2])" * (cast_expression "(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2])" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2])" ( (binary_expression "*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]" (pointer_expression "*(long *)(param_2 + 0x348)" * (cast_expression "(long *)(param_2 + 0x348)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x348)" ( (binary_expression "param_2 + 0x348" identifier + number_literal) )))) + (subscript_expression "local_c8[lVar8 * 2]" identifier [ (binary_expression "lVar8 * 2" identifier * number_literal) ])) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00114536;" goto statement_identifier ;)) (expression_statement "lVar8 = lVar21;" (assignment_expression "lVar8 = lVar21" identifier = identifier) ;) }) while (parenthesized_expression "(lVar21 != local_c0)" ( (binary_expression "lVar21 != local_c0" identifier != identifier) )) ;) })) (expression_statement "FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);" (call_expression "FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8)" identifier (argument_list "(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8)" ( (binary_expression "*(long *)(param_2 + 0x358) + 8" (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))) + number_literal) , (binary_expression "*(long *)(param_2 + 0x358) + 0x10" (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))) + number_literal) , (pointer_expression "&local_c8" & identifier) , (pointer_expression "&local_c0" & identifier) , number_literal , (pointer_expression "&local_a8" & identifier) ))) ;) (expression_statement "FUN_00111e00(&local_a8,&local_a0,&local_c8);" (call_expression "FUN_00111e00(&local_a8,&local_a0,&local_c8)" identifier (argument_list "(&local_a8,&local_a0,&local_c8)" ( (pointer_expression "&local_a8" & identifier) , (pointer_expression "&local_a0" & identifier) , (pointer_expression "&local_c8" & identifier) ))) ;) })) (labeled_statement "LAB_00114536:\n  uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2;" statement_identifier : (expression_statement "uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2;" (assignment_expression "uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2" identifier = (binary_expression "(uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2" (call_expression "(uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0)" ( (binary_expression "(local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0" (parenthesized_expression "(local_88._0_8_ & *(ulong *)(param_2 + 0x230))" ( (binary_expression "local_88._0_8_ & *(ulong *)(param_2 + 0x230)" (field_expression "local_88._0_8_" identifier . field_identifier) & (pointer_expression "*(ulong *)(param_2 + 0x230)" * (cast_expression "(ulong *)(param_2 + 0x230)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x230)" ( (binary_expression "param_2 + 0x230" identifier + number_literal) ))))) )) != number_literal) ))) << number_literal)) ;)) (if_statement "if ((local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0) {\n    uVar23 = uVar23 | 2;\n  }" if (parenthesized_expression "((local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0)" ( (binary_expression "(local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0" (parenthesized_expression "(local_88._0_8_ & *(ulong *)(param_2 + 0x210))" ( (binary_expression "local_88._0_8_ & *(ulong *)(param_2 + 0x210)" (field_expression "local_88._0_8_" identifier . field_identifier) & (pointer_expression "*(ulong *)(param_2 + 0x210)" * (cast_expression "(ulong *)(param_2 + 0x210)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x210)" ( (binary_expression "param_2 + 0x210" identifier + number_literal) ))))) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 2;\n  }" { (expression_statement "uVar23 = uVar23 | 2;" (assignment_expression "uVar23 = uVar23 | 2" identifier = (binary_expression "uVar23 | 2" identifier | number_literal)) ;) })) (if_statement "if ((~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }" if (parenthesized_expression "((~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0)" ( (binary_expression "(~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0" (parenthesized_expression "(~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_)" ( (binary_expression "~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_" (unary_expression "~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210))" ~ (parenthesized_expression "(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210))" ( (binary_expression "*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)" (pointer_expression "*(ulong *)(param_2 + 0x230)" * (cast_expression "(ulong *)(param_2 + 0x230)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x230)" ( (binary_expression "param_2 + 0x230" identifier + number_literal) )))) | (pointer_expression "*(ulong *)(param_2 + 0x210)" * (cast_expression "(ulong *)(param_2 + 0x210)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x210)" ( (binary_expression "param_2 + 0x210" identifier + number_literal) ))))) ))) & (field_expression "local_88._0_8_" identifier . field_identifier)) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 1;\n  }" { (expression_statement "uVar23 = uVar23 | 1;" (assignment_expression "uVar23 = uVar23 | 1" identifier = (binary_expression "uVar23 | 1" identifier | number_literal)) ;) })) (if_statement "if ((local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0) {\n    uVar23 = uVar23 | 4;\n  }" if (parenthesized_expression "((local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0)" ( (binary_expression "(local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0" (parenthesized_expression "(local_88._8_8_ & *(ulong *)(param_2 + 0x238))" ( (binary_expression "local_88._8_8_ & *(ulong *)(param_2 + 0x238)" (field_expression "local_88._8_8_" identifier . field_identifier) & (pointer_expression "*(ulong *)(param_2 + 0x238)" * (cast_expression "(ulong *)(param_2 + 0x238)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x238)" ( (binary_expression "param_2 + 0x238" identifier + number_literal) ))))) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 4;\n  }" { (expression_statement "uVar23 = uVar23 | 4;" (assignment_expression "uVar23 = uVar23 | 4" identifier = (binary_expression "uVar23 | 4" identifier | number_literal)) ;) })) (if_statement "if ((local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0) {\n    uVar23 = uVar23 | 2;\n  }" if (parenthesized_expression "((local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0)" ( (binary_expression "(local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0" (parenthesized_expression "(local_88._8_8_ & *(ulong *)(param_2 + 0x218))" ( (binary_expression "local_88._8_8_ & *(ulong *)(param_2 + 0x218)" (field_expression "local_88._8_8_" identifier . field_identifier) & (pointer_expression "*(ulong *)(param_2 + 0x218)" * (cast_expression "(ulong *)(param_2 + 0x218)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x218)" ( (binary_expression "param_2 + 0x218" identifier + number_literal) ))))) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 2;\n  }" { (expression_statement "uVar23 = uVar23 | 2;" (assignment_expression "uVar23 = uVar23 | 2" identifier = (binary_expression "uVar23 | 2" identifier | number_literal)) ;) })) (if_statement "if ((~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }" if (parenthesized_expression "((~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0)" ( (binary_expression "(~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0" (parenthesized_expression "(~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_)" ( (binary_expression "~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_" (unary_expression "~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218))" ~ (parenthesized_expression "(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218))" ( (binary_expression "*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)" (pointer_expression "*(ulong *)(param_2 + 0x238)" * (cast_expression "(ulong *)(param_2 + 0x238)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x238)" ( (binary_expression "param_2 + 0x238" identifier + number_literal) )))) | (pointer_expression "*(ulong *)(param_2 + 0x218)" * (cast_expression "(ulong *)(param_2 + 0x218)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x218)" ( (binary_expression "param_2 + 0x218" identifier + number_literal) ))))) ))) & (field_expression "local_88._8_8_" identifier . field_identifier)) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 1;\n  }" { (expression_statement "uVar23 = uVar23 | 1;" (assignment_expression "uVar23 = uVar23 | 1" identifier = (binary_expression "uVar23 | 1" identifier | number_literal)) ;) })) (if_statement "if ((*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }" if (parenthesized_expression "((*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0)" ( (binary_expression "(*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0" (parenthesized_expression "(*(ulong *)(param_2 + 0x240) & local_78._0_8_)" ( (binary_expression "*(ulong *)(param_2 + 0x240) & local_78._0_8_" (pointer_expression "*(ulong *)(param_2 + 0x240)" * (cast_expression "(ulong *)(param_2 + 0x240)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x240)" ( (binary_expression "param_2 + 0x240" identifier + number_literal) )))) & (field_expression "local_78._0_8_" identifier . field_identifier)) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 4;\n  }" { (expression_statement "uVar23 = uVar23 | 4;" (assignment_expression "uVar23 = uVar23 | 4" identifier = (binary_expression "uVar23 | 4" identifier | number_literal)) ;) })) (if_statement "if ((*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 2;\n  }" if (parenthesized_expression "((*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0)" ( (binary_expression "(*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0" (parenthesized_expression "(*(ulong *)(param_2 + 0x220) & local_78._0_8_)" ( (binary_expression "*(ulong *)(param_2 + 0x220) & local_78._0_8_" (pointer_expression "*(ulong *)(param_2 + 0x220)" * (cast_expression "(ulong *)(param_2 + 0x220)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x220)" ( (binary_expression "param_2 + 0x220" identifier + number_literal) )))) & (field_expression "local_78._0_8_" identifier . field_identifier)) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 2;\n  }" { (expression_statement "uVar23 = uVar23 | 2;" (assignment_expression "uVar23 = uVar23 | 2" identifier = (binary_expression "uVar23 | 2" identifier | number_literal)) ;) })) (if_statement "if ((~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }" if (parenthesized_expression "((~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0)" ( (binary_expression "(~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0" (parenthesized_expression "(~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_)" ( (binary_expression "~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_" (unary_expression "~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240))" ~ (parenthesized_expression "(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240))" ( (binary_expression "*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)" (pointer_expression "*(ulong *)(param_2 + 0x220)" * (cast_expression "(ulong *)(param_2 + 0x220)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x220)" ( (binary_expression "param_2 + 0x220" identifier + number_literal) )))) | (pointer_expression "*(ulong *)(param_2 + 0x240)" * (cast_expression "(ulong *)(param_2 + 0x240)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x240)" ( (binary_expression "param_2 + 0x240" identifier + number_literal) ))))) ))) & (field_expression "local_78._0_8_" identifier . field_identifier)) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 1;\n  }" { (expression_statement "uVar23 = uVar23 | 1;" (assignment_expression "uVar23 = uVar23 | 1" identifier = (binary_expression "uVar23 | 1" identifier | number_literal)) ;) })) (if_statement "if ((*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }" if (parenthesized_expression "((*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0)" ( (binary_expression "(*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0" (parenthesized_expression "(*(ulong *)(param_2 + 0x248) & local_78._8_8_)" ( (binary_expression "*(ulong *)(param_2 + 0x248) & local_78._8_8_" (pointer_expression "*(ulong *)(param_2 + 0x248)" * (cast_expression "(ulong *)(param_2 + 0x248)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x248)" ( (binary_expression "param_2 + 0x248" identifier + number_literal) )))) & (field_expression "local_78._8_8_" identifier . field_identifier)) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 4;\n  }" { (expression_statement "uVar23 = uVar23 | 4;" (assignment_expression "uVar23 = uVar23 | 4" identifier = (binary_expression "uVar23 | 4" identifier | number_literal)) ;) })) (if_statement "if ((local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0) {\n    uVar23 = uVar23 | 2;\n  }" if (parenthesized_expression "((local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0)" ( (binary_expression "(local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0" (parenthesized_expression "(local_78._8_8_ & *(ulong *)(param_2 + 0x228))" ( (binary_expression "local_78._8_8_ & *(ulong *)(param_2 + 0x228)" (field_expression "local_78._8_8_" identifier . field_identifier) & (pointer_expression "*(ulong *)(param_2 + 0x228)" * (cast_expression "(ulong *)(param_2 + 0x228)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x228)" ( (binary_expression "param_2 + 0x228" identifier + number_literal) ))))) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 2;\n  }" { (expression_statement "uVar23 = uVar23 | 2;" (assignment_expression "uVar23 = uVar23 | 2" identifier = (binary_expression "uVar23 | 2" identifier | number_literal)) ;) })) (if_statement "if ((~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0) {\n    if (local_c0 != 0) goto LAB_0011464f;\n    if (uVar23 != 0) goto LAB_00114c0f;\n    lVar21 = -1;\n    lVar7 = -1;\n    lVar8 = lVar21;\n  }\n  else {\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }" if (parenthesized_expression "((~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0)" ( (binary_expression "(~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0" (parenthesized_expression "(~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_)" ( (binary_expression "~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_" (unary_expression "~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228))" ~ (parenthesized_expression "(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228))" ( (binary_expression "*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)" (pointer_expression "*(ulong *)(param_2 + 0x248)" * (cast_expression "(ulong *)(param_2 + 0x248)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x248)" ( (binary_expression "param_2 + 0x248" identifier + number_literal) )))) | (pointer_expression "*(ulong *)(param_2 + 0x228)" * (cast_expression "(ulong *)(param_2 + 0x228)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x228)" ( (binary_expression "param_2 + 0x228" identifier + number_literal) ))))) ))) & (field_expression "local_78._8_8_" identifier . field_identifier)) )) == number_literal) )) (compound_statement "{\n    if (local_c0 != 0) goto LAB_0011464f;\n    if (uVar23 != 0) goto LAB_00114c0f;\n    lVar21 = -1;\n    lVar7 = -1;\n    lVar8 = lVar21;\n  }" { (if_statement "if (local_c0 != 0) goto LAB_0011464f;" if (parenthesized_expression "(local_c0 != 0)" ( (binary_expression "local_c0 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0011464f;" goto statement_identifier ;)) (if_statement "if (uVar23 != 0) goto LAB_00114c0f;" if (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00114c0f;" goto statement_identifier ;)) (expression_statement "lVar21 = -1;" (assignment_expression "lVar21 = -1" identifier = number_literal) ;) (expression_statement "lVar7 = -1;" (assignment_expression "lVar7 = -1" identifier = number_literal) ;) (expression_statement "lVar8 = lVar21;" (assignment_expression "lVar8 = lVar21" identifier = identifier) ;) }) (else_clause "else {\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }" else (compound_statement "{\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }" { (expression_statement "uVar23 = uVar23 | 1;" (assignment_expression "uVar23 = uVar23 | 1" identifier = (binary_expression "uVar23 | 1" identifier | number_literal)) ;) (if_statement "if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }" if (parenthesized_expression "(local_c0 == 0)" ( (binary_expression "local_c0 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }" { (labeled_statement "LAB_00114c0f:\n      uVar33 = 0;" statement_identifier : (expression_statement "uVar33 = 0;" (assignment_expression "uVar33 = 0" identifier = number_literal) ;)) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (expression_statement "uVar19 = 7;" (assignment_expression "uVar19 = 7" identifier = number_literal) ;) (labeled_statement "LAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);" statement_identifier : (expression_statement "lVar8 = FUN_00112550(param_2,&local_c8,uVar19);" (assignment_expression "lVar8 = FUN_00112550(param_2,&local_c8,uVar19)" identifier = (call_expression "FUN_00112550(param_2,&local_c8,uVar19)" identifier (argument_list "(param_2,&local_c8,uVar19)" ( identifier , (pointer_expression "&local_c8" & identifier) , identifier )))) ;)) }) (else_clause "else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }" else (compound_statement "{\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }" { (labeled_statement "LAB_0011464f:\n      uVar19 = 0;" statement_identifier : (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;)) (expression_statement "plVar15 = local_c8;" (assignment_expression "plVar15 = local_c8" identifier = identifier) ;) (do_statement "do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);" do (compound_statement "{\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      }" { (expression_statement "lVar8 = *plVar15;" (assignment_expression "lVar8 = *plVar15" identifier = (pointer_expression "*plVar15" * identifier)) ;) (expression_statement "plVar15 = plVar15 + 2;" (assignment_expression "plVar15 = plVar15 + 2" identifier = (binary_expression "plVar15 + 2" identifier + number_literal)) ;) (expression_statement "uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);" (assignment_expression "uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4)" identifier = (binary_expression "uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4)" identifier | (pointer_expression "*(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4)" * (cast_expression "(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x388) + lVar8 * 4)" ( (binary_expression "*(long *)(param_2 + 0x388) + lVar8 * 4" (pointer_expression "*(long *)(param_2 + 0x388)" * (cast_expression "(long *)(param_2 + 0x388)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x388)" ( (binary_expression "param_2 + 0x388" identifier + number_literal) )))) + (binary_expression "lVar8 * 4" identifier * number_literal)) )))))) ;) }) while (parenthesized_expression "(local_c8 + local_c0 * 2 != plVar15)" ( (binary_expression "local_c8 + local_c0 * 2 != plVar15" (binary_expression "local_c8 + local_c0 * 2" identifier + (binary_expression "local_c0 * 2" identifier * number_literal)) != identifier) )) ;) (expression_statement "lVar8 = -1;" (assignment_expression "lVar8 = -1" identifier = number_literal) ;) (expression_statement "uVar33 = uVar19 & uVar23 & 2;" (assignment_expression "uVar33 = uVar19 & uVar23 & 2" identifier = (binary_expression "uVar19 & uVar23 & 2" (binary_expression "uVar19 & uVar23" identifier & identifier) & number_literal)) ;) (expression_statement "uVar31 = uVar19 & uVar23 & 4;" (assignment_expression "uVar31 = uVar19 & uVar23 & 4" identifier = (binary_expression "uVar19 & uVar23 & 4" (binary_expression "uVar19 & uVar23" identifier & identifier) & number_literal)) ;) (if_statement "if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }" if (parenthesized_expression "((~uVar19 & uVar23) != 0)" ( (binary_expression "(~uVar19 & uVar23) != 0" (parenthesized_expression "(~uVar19 & uVar23)" ( (binary_expression "~uVar19 & uVar23" (unary_expression "~uVar19" ~ identifier) & identifier) )) != number_literal) )) (compound_statement "{\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }" { (expression_statement "uVar19 = uVar19 ^ 7;" (assignment_expression "uVar19 = uVar19 ^ 7" identifier = (binary_expression "uVar19 ^ 7" identifier ^ number_literal)) ;) (goto_statement "goto LAB_00114bf3;" goto statement_identifier ;) })) }))) (expression_statement "lVar21 = lVar8;" (assignment_expression "lVar21 = lVar8" identifier = identifier) ;) (if_statement "if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }" if (parenthesized_expression "(uVar31 != 0)" ( (binary_expression "uVar31 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }" { (expression_statement "lVar21 = FUN_00112550(param_2,&local_c8,4);" (assignment_expression "lVar21 = FUN_00112550(param_2,&local_c8,4)" identifier = (call_expression "FUN_00112550(param_2,&local_c8,4)" identifier (argument_list "(param_2,&local_c8,4)" ( identifier , (pointer_expression "&local_c8" & identifier) , number_literal )))) ;) })) (expression_statement "lVar7 = lVar8;" (assignment_expression "lVar7 = lVar8" identifier = identifier) ;) (if_statement "if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }" if (parenthesized_expression "(uVar33 != 0)" ( (binary_expression "uVar33 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }" { (expression_statement "lVar7 = FUN_00112550(param_2,&local_c8,2);" (assignment_expression "lVar7 = FUN_00112550(param_2,&local_c8,2)" identifier = (call_expression "FUN_00112550(param_2,&local_c8,2)" identifier (argument_list "(param_2,&local_c8,2)" ( identifier , (pointer_expression "&local_c8" & identifier) , number_literal )))) ;) })) }))) (expression_statement "FUN_00111ef0(param_2);" (call_expression "FUN_00111ef0(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (labeled_statement "LAB_001146d6:\n  uVar13 = 0;" statement_identifier : (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;)) (do_statement "do {\n    while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }\n    cVar1 = *(char *)(param_2 + 0xc + uVar13);\n    if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar13] = lVar7;\n    uVar13 = uVar13 + 1;\n  } while (uVar13 != 0x100);" do (compound_statement "{\n    while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }\n    cVar1 = *(char *)(param_2 + 0xc + uVar13);\n    if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar13] = lVar7;\n    uVar13 = uVar13 + 1;\n  }" { (while_statement "while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }" while (parenthesized_expression "((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0)" ( (binary_expression "(*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0" (parenthesized_expression "(*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1)" ( (binary_expression "*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1" (binary_expression "*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f)" (pointer_expression "*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8)" * (cast_expression "(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8)" ( (binary_expression "local_88 + (uVar13 >> 6 & 0x3ffffff) * 8" identifier + (binary_expression "(uVar13 >> 6 & 0x3ffffff) * 8" (parenthesized_expression "(uVar13 >> 6 & 0x3ffffff)" ( (binary_expression "uVar13 >> 6 & 0x3ffffff" (binary_expression "uVar13 >> 6" identifier >> number_literal) & number_literal) )) * number_literal)) )))) >> (parenthesized_expression "(uVar13 & 0x3f)" ( (binary_expression "uVar13 & 0x3f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }" { (labeled_statement "LAB_001146ed:\n      uVar13 = uVar13 + 1;" statement_identifier : (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;)) (if_statement "if (uVar13 == 0x100) goto LAB_00114728;" if (parenthesized_expression "(uVar13 == 0x100)" ( (binary_expression "uVar13 == 0x100" identifier == number_literal) )) (goto_statement "goto LAB_00114728;" goto statement_identifier ;)) })) (expression_statement "cVar1 = *(char *)(param_2 + 0xc + uVar13);" (assignment_expression "cVar1 = *(char *)(param_2 + 0xc + uVar13)" identifier = (pointer_expression "*(char *)(param_2 + 0xc + uVar13)" * (cast_expression "(char *)(param_2 + 0xc + uVar13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc + uVar13)" ( (binary_expression "param_2 + 0xc + uVar13" (binary_expression "param_2 + 0xc" identifier + number_literal) + identifier) ))))) ;) (if_statement "if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }" if (parenthesized_expression "(cVar1 != '\x02')" ( (binary_expression "cVar1 != '\x02'" identifier != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }" { (expression_statement "lVar26 = lVar21;" (assignment_expression "lVar26 = lVar21" identifier = identifier) ;) (if_statement "if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }" if (parenthesized_expression "(cVar1 != '\x04')" ( (binary_expression "cVar1 != '\x04'" identifier != (char_literal "'\x04'" ' escape_sequence ')) )) (compound_statement "{\n        lVar26 = lVar8;\n      }" { (expression_statement "lVar26 = lVar8;" (assignment_expression "lVar26 = lVar8" identifier = identifier) ;) })) (expression_statement "local_e0[uVar13] = lVar26;" (assignment_expression "local_e0[uVar13] = lVar26" (subscript_expression "local_e0[uVar13]" identifier [ identifier ]) = identifier) ;) (goto_statement "goto LAB_001146ed;" goto statement_identifier ;) })) (expression_statement "local_e0[uVar13] = lVar7;" (assignment_expression "local_e0[uVar13] = lVar7" (subscript_expression "local_e0[uVar13]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 != 0x100)" ( (binary_expression "uVar13 != 0x100" identifier != number_literal) )) ;) (labeled_statement "LAB_00114728:\n  free(local_c8);" statement_identifier : (expression_statement "free(local_c8);" (call_expression "free(local_c8)" identifier (argument_list "(local_c8)" ( identifier ))) ;)) (expression_statement "free(__src);" (call_expression "free(__src)" identifier (argument_list "(__src)" ( identifier ))) ;) (expression_statement "free(local_a8);" (call_expression "free(local_a8)" identifier (argument_list "(local_a8)" ( identifier ))) ;) (expression_statement "bVar18 = *(byte *)(param_2 + 0xb);" (assignment_expression "bVar18 = *(byte *)(param_2 + 0xb)" identifier = (pointer_expression "*(byte *)(param_2 + 0xb)" * (cast_expression "(byte *)(param_2 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xb)" ( (binary_expression "param_2 + 0xb" identifier + number_literal) ))))) ;) (if_statement "if ((*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0) {\n    *(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];\n    local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;\n  }" if (parenthesized_expression "((*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0)" ( (binary_expression "(*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0" (parenthesized_expression "(*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1)" ( (binary_expression "*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1" (binary_expression "*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f)" (pointer_expression "*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8)" * (cast_expression "(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_88 + (ulong)(bVar18 >> 6) * 8)" ( (binary_expression "local_88 + (ulong)(bVar18 >> 6) * 8" identifier + (binary_expression "(ulong)(bVar18 >> 6) * 8" (call_expression "(ulong)(bVar18 >> 6)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar18 >> 6)" ( (binary_expression "bVar18 >> 6" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar18 & 0x3f)" ( (binary_expression "bVar18 & 0x3f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n    *(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];\n    local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;\n  }" { (expression_statement "*(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];" (assignment_expression "*(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18]" (pointer_expression "*(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8)" * (cast_expression "(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x3b8) + param_1 * 8)" ( (binary_expression "*(long *)(param_2 + 0x3b8) + param_1 * 8" (pointer_expression "*(long *)(param_2 + 0x3b8)" * (cast_expression "(long *)(param_2 + 0x3b8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3b8)" ( (binary_expression "param_2 + 0x3b8" identifier + number_literal) )))) + (binary_expression "param_1 * 8" identifier * number_literal)) )))) = (subscript_expression "local_e0[bVar18]" identifier [ identifier ])) ;) (expression_statement "local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;" (assignment_expression "local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff" (subscript_expression "local_e0[*(byte *)(param_2 + 0xb)]" identifier [ (pointer_expression "*(byte *)(param_2 + 0xb)" * (cast_expression "(byte *)(param_2 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xb)" ( (binary_expression "param_2 + 0xb" identifier + number_literal) )))) ]) = number_literal) ;) })) (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return local_e0[param_3];" return (subscript_expression "local_e0[param_3]" identifier [ identifier ]) ;) })))
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nstate_num build_state(state_num s,dfa *d,uchar uc)\n\n{\n  uint *puVar1;\n  char cVar2;\n  byte bVar3;\n  ushort uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  position p;\n  size_t *psVar8;\n  ptrdiff_t pVar9;\n  ptrdiff_t pVar10;\n  position *p_00;\n  long lVar11;\n  ulong uVar12;\n  position *ppVar13;\n  ulong uVar14;\n  position *ppVar15;\n  state_num sVar16;\n  state_num sVar17;\n  state_num sVar18;\n  charclass_word cVar19;\n  state_num *psVar20;\n  state_num **ppsVar21;\n  byte bVar22;\n  uint uVar23;\n  uint uVar24;\n  wchar_t wVar25;\n  size_t sVar26;\n  uint uVar27;\n  state_num **ppsVar28;\n  position_set *ppVar29;\n  long lVar30;\n  dfa_state *pdVar31;\n  charclass_word cVar32;\n  long lVar33;\n  state_num sVar34;\n  size_t n;\n  charclass_word cVar35;\n  ulong uVar36;\n  position_set *ppVar37;\n  ulong uVar38;\n  uint uVar39;\n  long lVar40;\n  long in_FS_OFFSET;\n  uint local_118;\n  uint uStack_114;\n  uint local_110;\n  uint uStack_10c;\n  ulong local_100;\n  dfa_state *local_f8;\n  state_num *local_e0;\n  position_set group;\n  position_set tmp;\n  charclass label;\n  charclass matches;\n  \n  lVar5 = *(long *)(in_FS_OFFSET + 0x28);\n  ppsVar21 = d->trans;\n  ppsVar28 = ppsVar21;\n  if (d->states[s].constraint != 0) {\n    ppsVar28 = d->fails;\n  }\n  local_e0 = ppsVar28[s];\n  if (local_e0 == (state_num *)0x0) {\n    if (d->trcount < L'Ѐ') {\n      wVar25 = d->trcount + L'\x01';\n    }\n    else {\n      lVar33 = (long)d->min_trcount;\n      if (lVar33 < d->tralloc) {\n        do {\n          free(ppsVar21[lVar33]);\n          free(d->fails[lVar33]);\n          d->fails[lVar33] = (state_num *)0x0;\n          ppsVar21 = d->trans;\n          ppsVar21[lVar33] = (state_num *)0x0;\n          lVar33 = lVar33 + 1;\n        } while (lVar33 < d->tralloc);\n      }\n      wVar25 = L'\x01';\n    }\n    d->trcount = wVar25;\n    local_e0 = (state_num *)xmalloc(0x800);\n    sVar16 = _UNK_00128298;\n    sVar34 = _DAT_00128290;\n    ppsVar28[s] = local_e0;\n    psVar20 = local_e0;\n    do {\n      *psVar20 = sVar34;\n      psVar20[1] = sVar16;\n      psVar20 = psVar20 + 2;\n    } while (local_e0 + 0x100 != psVar20);\n  }\n  d->success[s] = '\0';\n  bVar22 = d->states[s].context;\n  uVar4 = d->states[s].constraint;\n  uVar27 = (uint)uVar4;\n  if (((int)uVar27 >> 6 & (uint)bVar22 & 7) != 0) {\n    d->success[s] = d->success[s] | 4;\n    bVar22 = d->states[s].context;\n    uVar4 = d->states[s].constraint;\n    uVar27 = (uint)uVar4;\n  }\n  uVar23 = (uint)bVar22;\n  if (((int)(uint)uVar4 >> 3 & uVar23 & 7) != 0) {\n    d->success[s] = d->success[s] | 2;\n    uVar23 = (uint)d->states[s].context;\n    uVar27 = (uint)d->states[s].constraint;\n  }\n  if ((uVar27 & 7 & uVar23) != 0) {\n    d->success[s] = d->success[s] | 1;\n  }\n  uVar14 = d->nleaves;\n  if (((long)(uVar14 << 4) < 0) || (uVar14 >> 0x3c != 0)) {\nLAB_00114c1c:\n                    /* WARNING: Subroutine does not return */\n    xalloc_die();\n  }\n  p_00 = (position *)xmalloc(uVar14 << 4);\n  local_f8 = d->states + s;\n  uVar36 = (local_f8->elems).nelem;\n  if (uVar36 == 0) {\n    lVar33 = 0;\n  }\n  else {\n    local_100 = 0;\n    ppVar15 = (local_f8->elems).elems;\n    lVar33 = 0;\n    ppVar37 = d->follows;\n    do {\n      uVar38 = 0;\n      ppVar29 = ppVar37 + ppVar15[local_100].index;\n      if (ppVar29->nelem != 0) {\n        do {\n          uVar36 = ppVar29->elems[uVar38].index;\n          uVar27 = ppVar29->elems[uVar38].constraint;\n          ppVar13 = p_00;\n          if (lVar33 == 0) {\n            if ((long)uVar14 < 1) {\n              lVar40 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar40 = 0;\n            lVar30 = lVar33;\n            do {\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            } while (lVar40 < lVar30);\nLAB_0011401d:\n            uVar12 = uVar14;\n            if ((long)uVar14 <= lVar33) {\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }\n            p_00 = ppVar13 + lVar40;\n            uVar14 = uVar12;\n            if (lVar40 < lVar33) {\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }\n          }\n          p_00->index = uVar36;\n          lVar33 = lVar33 + 1;\n          p_00->constraint = uVar27;\n          p_00 = ppVar13;\nLAB_00114119:\n          uVar38 = uVar38 + 1;\n          ppVar29 = ppVar37 + ppVar15[local_100].index;\n        } while (uVar38 < (ulong)ppVar29->nelem);\n        uVar36 = (local_f8->elems).nelem;\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar36);\n  }\n  uVar14 = d->nleaves;\n  if (((long)(uVar14 << 4) < 0) || (uVar14 >> 0x3c != 0)) goto LAB_00114c1c;\n  group.elems = (position *)xmalloc(uVar14 << 4);\n  group.nelem = 0;\n  label.w[0] = 0xffffffffffffffff;\n  label.w[1] = 0xffffffffffffffff;\n  label.w[2]._0_4_ = 0xffffffff;\n  label.w[2]._4_4_ = 0xffffffff;\n  label.w[3]._0_4_ = 0xffffffff;\n  label.w[3]._4_4_ = 0xffffffff;\n  group.alloc = uVar14;\n  if (lVar33 != 0) {\n    lVar40 = 0;\n    uVar27 = (uint)(uc >> 6);\n    uVar14 = 1L << (uc & 0x3f);\n    ppVar15 = p_00;\n    do {\n      while( true ) {\n        sVar26 = ppVar15->index;\n        uVar6 = *(undefined8 *)&ppVar15->constraint;\n        p = *ppVar15;\n        uVar23 = ppVar15->constraint;\n        uVar36 = d->tokens[sVar26];\n        local_110 = (uint)uVar14;\n        uStack_10c = (uint)(uVar14 >> 0x20);\n        if (uVar36 < 0x100) break;\n        if ((long)uVar36 < 0x114) {\n          if (uVar36 != 0x10a) goto LAB_0011435a;\n          pdVar31 = d->states + s;\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[d->canychar].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[d->canychar].w + 2);\n          bVar22 = (byte)(matches.w[uVar27] >> (uc & 0x3f)) & 1;\n          if ((pdVar31->context & uVar23 & 7) != 0) {\n            if ((pdVar31->mbps).nelem == 0) {\n              ppVar13 = (position *)xmalloc(0x10);\n              pVar10 = _UNK_001282a8;\n              pVar9 = _DAT_001282a0;\n              (pdVar31->mbps).elems = ppVar13;\n              (pdVar31->mbps).nelem = pVar9;\n              (pdVar31->mbps).alloc = pVar10;\n              pdVar31 = d->states + s;\n            }\n            insert(p,&pdVar31->mbps);\n          }\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar22 != 0) goto LAB_00114267;\n        }\n        else {\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2);\n          if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar22 = 0;\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) {\nLAB_0011485e:\n            bVar3 = d->states[s].context;\n            cVar19 = matches.w[0];\n            cVar32 = matches.w[2];\n            cVar35 = matches.w[1];\n            uVar36 = matches.w[3];\n            if (((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0) {\n              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];\n              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];\n              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ~(d->syntax).letters.w[0];\n              cVar35 = cVar35 & ~(d->syntax).letters.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = cVar32 & ~(d->syntax).letters.w[2];\n              uVar36 = uVar36 & ~(d->syntax).letters.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if ((uVar23 & bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);\n              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);\n              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0) goto LAB_0011435a;\n            if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011445b;\n          }\n        }\n        local_118 = (uint)cVar32;\n        uStack_114 = (uint)(cVar32 >> 0x20);\n        lVar40 = lVar40 + 1;\n        ppVar15 = ppVar15 + 1;\n        label.w[2]._0_4_ = ~local_118 & (uint)label.w[2];\n        label.w[2]._4_4_ = ~uStack_114 & label.w[2]._4_4_;\n        label.w[3]._0_4_ = ~local_110 & (uint)label.w[3];\n        label.w[3]._4_4_ = ~uStack_10c & label.w[3]._4_4_;\n        label.w[0] = ~cVar19 & label.w[0];\n        label.w[1] = ~cVar35 & label.w[1];\n        if (lVar40 == lVar33) goto LAB_001144c5;\n      }\n      matches.w[0] = 0;\n      matches.w[1] = 0;\n      matches.w[2] = 0;\n      matches.w[3] = 0;\n      matches.w[uVar36 >> 6 & 0x3ffffff] = 1L << ((byte)uVar36 & 0x3f);\n      if (uVar36 != uc) goto LAB_0011482f;\nLAB_0011423a:\n      cVar19 = matches.w[0];\n      cVar32 = matches.w[2];\n      cVar35 = matches.w[1];\n      if (uVar23 != 0x1ff) {\n        bVar22 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      pVar9 = group.alloc;\n      local_118 = (uint)cVar32;\n      uStack_114 = (uint)(cVar32 >> 0x20);\n      label.w[2]._0_4_ = local_118 & (uint)label.w[2];\n      label.w[2]._4_4_ = uStack_114 & label.w[2]._4_4_;\n      label.w[3]._0_4_ = local_110 & (uint)label.w[3];\n      label.w[3]._4_4_ = uStack_10c & label.w[3]._4_4_;\n      label.w[0] = cVar19 & label.w[0];\n      label.w[1] = cVar35 & label.w[1];\n      if (group.alloc <= group.nelem) {\n        lVar30 = (group.alloc >> 1) + group.alloc;\n        if ((SCARRY8(group.alloc >> 1,group.alloc)) ||\n           (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))) {\n          lVar30 = 0x7ffffffffffffff;\n          n = 0x7ffffffffffffff0;\n        }\n        else if ((long)n < 0x80) {\n          n = 0x80;\n          lVar30 = 8;\n        }\n        if (group.elems == (position *)0x0) {\n          group.alloc = 0;\n        }\n        if ((lVar30 == pVar9 || lVar30 - pVar9 < 0) &&\n           ((lVar30 = pVar9 + 1, SCARRY8(pVar9,1) ||\n            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        group.elems = (position *)xrealloc(group.elems,n);\n        group.alloc = lVar30;\n      }\n      group.elems[group.nelem].index = sVar26;\n      group.elems[group.nelem].constraint = (uint)uVar6;\n      group.nelem = group.nelem + 1;\nLAB_0011435a:\n      lVar40 = lVar40 + 1;\n      ppVar15 = ppVar15 + 1;\n    } while (lVar40 != lVar33);\n  }\nLAB_001144c5:\n  uVar14 = d->nleaves;\n  if ((long)(uVar14 << 4) < 0 || uVar14 >> 0x3c != 0) goto LAB_00114c1c;\n  tmp.elems = (position *)xmalloc(uVar14 << 4);\n  tmp.nelem = 0;\n  tmp.alloc = uVar14;\n  if (group.nelem < 1) {\n    if (d->searchflag == false) {\n      sVar16 = -1;\n      sVar34 = -1;\n      sVar17 = sVar16;\n    }\n    else {\n      sVar34 = d->initstate_notbol;\n      sVar16 = 0;\n      sVar17 = (long)(d->min_trcount + L'\xffffffff');\n    }\n    goto LAB_001146d6;\n  }\n  if (d->searchflag != false) {\n    if ((d->localeinfo).multibyte != false) {\n      lVar33 = 0;\n      do {\n        lVar40 = lVar33 + 1;\n        if ((d->multibyte_prop[group.elems[lVar33].index] & 1U) == 0) goto LAB_00114536;\n        lVar33 = lVar40;\n      } while (lVar40 != group.nelem);\n    }\n    merge_constrained(&d->states->elems,(position_set *)&(d->states->elems).nelem,(uint)&group,\n                      (position_set *)&group.nelem,(position_set *)0xffffffff,&tmp);\n    copy((EVP_PKEY_CTX *)&tmp,(EVP_PKEY_CTX *)&tmp.nelem);\n  }\nLAB_00114536:\n  uVar14 = (d->syntax).newline.w[0];\n  uVar36 = (d->syntax).letters.w[0];\n  uVar27 = (uint)((label.w[0] & uVar14) != 0) << 2;\n  if ((label.w[0] & uVar36) != 0) {\n    uVar27 = uVar27 | 2;\n  }\n  uVar38 = (d->syntax).newline.w[1];\n  if ((~(uVar14 | uVar36) & label.w[0]) != 0) {\n    uVar27 = uVar27 | 1;\n  }\n  if ((label.w[1] & uVar38) != 0) {\n    uVar27 = uVar27 | 4;\n  }\n  uVar14 = (d->syntax).letters.w[1];\n  if ((label.w[1] & uVar14) != 0) {\n    uVar27 = uVar27 | 2;\n  }\n  uVar36 = CONCAT44(label.w[2]._4_4_,(uint)label.w[2]);\n  if ((~(uVar38 | uVar14) & label.w[1]) != 0) {\n    uVar27 = uVar27 | 1;\n  }\n  uVar14 = (d->syntax).newline.w[2];\n  if ((uVar14 & uVar36) != 0) {\n    uVar27 = uVar27 | 4;\n  }\n  uVar38 = (d->syntax).letters.w[2];\n  if ((uVar38 & uVar36) != 0) {\n    uVar27 = uVar27 | 2;\n  }\n  uVar7 = CONCAT44(label.w[3]._4_4_,(uint)label.w[3]);\n  uVar12 = (d->syntax).newline.w[3];\n  if ((~(uVar38 | uVar14) & uVar36) != 0) {\n    uVar27 = uVar27 | 1;\n  }\n  if ((uVar12 & uVar7) != 0) {\n    uVar27 = uVar27 | 4;\n  }\n  uVar14 = (d->syntax).letters.w[3];\n  if ((uVar7 & uVar14) != 0) {\n    uVar27 = uVar27 | 2;\n  }\n  if ((~(uVar12 | uVar14) & uVar7) == 0) {\n    if (group.nelem != 0) goto LAB_0011464f;\n    if (uVar27 != 0) goto LAB_00114c0f;\n    sVar16 = -1;\n    sVar17 = -1;\n    sVar34 = sVar16;\n  }\n  else {\n    uVar27 = uVar27 | 1;\n    if (group.nelem == 0) {\nLAB_00114c0f:\n      uVar39 = 0;\n      uVar23 = 0;\n      wVar25 = L'\a';\nLAB_00114bf3:\n      sVar34 = state_index(d,&group,wVar25);\n    }\n    else {\nLAB_0011464f:\n      uVar24 = 0;\n      ppVar15 = group.elems;\n      do {\n        psVar8 = &ppVar15->index;\n        ppVar15 = ppVar15 + 1;\n        uVar24 = uVar24 | d->separates[*psVar8];\n      } while (group.elems + group.nelem != ppVar15);\n      sVar34 = -1;\n      uVar39 = uVar24 & uVar27 & 2;\n      uVar23 = uVar24 & uVar27 & 4;\n      if ((~uVar24 & uVar27) != 0) {\n        wVar25 = uVar24 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    sVar16 = sVar34;\n    if (uVar23 != 0) {\n      sVar16 = state_index(d,&group,L'\x04');\n    }\n    sVar17 = sVar34;\n    if (uVar39 != 0) {\n      sVar17 = state_index(d,&group,L'\x02');\n    }\n  }\n  realloc_trans_if_necessary(d);\nLAB_001146d6:\n  uVar14 = 0;\n  do {\n    while ((label.w[uVar14 >> 6 & 0x3ffffff] >> (uVar14 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar14 = uVar14 + 1;\n      if (uVar14 == 0x100) goto LAB_00114728;\n    }\n    cVar2 = (d->syntax).sbit[uVar14];\n    if (cVar2 != '\x02') {\n      sVar18 = sVar16;\n      if (cVar2 != '\x04') {\n        sVar18 = sVar34;\n      }\n      local_e0[uVar14] = sVar18;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar14] = sVar17;\n    uVar14 = uVar14 + 1;\n  } while (uVar14 != 0x100);\nLAB_00114728:\n  free(group.elems);\n  free(p_00);\n  free(tmp.elems);\n  bVar22 = (d->syntax).eolbyte;\n  if ((label.w[bVar22 >> 6] >> (bVar22 & 0x3f) & 1) != 0) {\n    d->newlines[s] = local_e0[bVar22];\n    local_e0[(d->syntax).eolbyte] = -1;\n  }\n  if (lVar5 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return local_e0[uc];\n}\n\n" comment (function_definition "state_num build_state(state_num s,dfa *d,uchar uc)\n\n{\n  uint *puVar1;\n  char cVar2;\n  byte bVar3;\n  ushort uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  position p;\n  size_t *psVar8;\n  ptrdiff_t pVar9;\n  ptrdiff_t pVar10;\n  position *p_00;\n  long lVar11;\n  ulong uVar12;\n  position *ppVar13;\n  ulong uVar14;\n  position *ppVar15;\n  state_num sVar16;\n  state_num sVar17;\n  state_num sVar18;\n  charclass_word cVar19;\n  state_num *psVar20;\n  state_num **ppsVar21;\n  byte bVar22;\n  uint uVar23;\n  uint uVar24;\n  wchar_t wVar25;\n  size_t sVar26;\n  uint uVar27;\n  state_num **ppsVar28;\n  position_set *ppVar29;\n  long lVar30;\n  dfa_state *pdVar31;\n  charclass_word cVar32;\n  long lVar33;\n  state_num sVar34;\n  size_t n;\n  charclass_word cVar35;\n  ulong uVar36;\n  position_set *ppVar37;\n  ulong uVar38;\n  uint uVar39;\n  long lVar40;\n  long in_FS_OFFSET;\n  uint local_118;\n  uint uStack_114;\n  uint local_110;\n  uint uStack_10c;\n  ulong local_100;\n  dfa_state *local_f8;\n  state_num *local_e0;\n  position_set group;\n  position_set tmp;\n  charclass label;\n  charclass matches;\n  \n  lVar5 = *(long *)(in_FS_OFFSET + 0x28);\n  ppsVar21 = d->trans;\n  ppsVar28 = ppsVar21;\n  if (d->states[s].constraint != 0) {\n    ppsVar28 = d->fails;\n  }\n  local_e0 = ppsVar28[s];\n  if (local_e0 == (state_num *)0x0) {\n    if (d->trcount < L'Ѐ') {\n      wVar25 = d->trcount + L'\x01';\n    }\n    else {\n      lVar33 = (long)d->min_trcount;\n      if (lVar33 < d->tralloc) {\n        do {\n          free(ppsVar21[lVar33]);\n          free(d->fails[lVar33]);\n          d->fails[lVar33] = (state_num *)0x0;\n          ppsVar21 = d->trans;\n          ppsVar21[lVar33] = (state_num *)0x0;\n          lVar33 = lVar33 + 1;\n        } while (lVar33 < d->tralloc);\n      }\n      wVar25 = L'\x01';\n    }\n    d->trcount = wVar25;\n    local_e0 = (state_num *)xmalloc(0x800);\n    sVar16 = _UNK_00128298;\n    sVar34 = _DAT_00128290;\n    ppsVar28[s] = local_e0;\n    psVar20 = local_e0;\n    do {\n      *psVar20 = sVar34;\n      psVar20[1] = sVar16;\n      psVar20 = psVar20 + 2;\n    } while (local_e0 + 0x100 != psVar20);\n  }\n  d->success[s] = '\0';\n  bVar22 = d->states[s].context;\n  uVar4 = d->states[s].constraint;\n  uVar27 = (uint)uVar4;\n  if (((int)uVar27 >> 6 & (uint)bVar22 & 7) != 0) {\n    d->success[s] = d->success[s] | 4;\n    bVar22 = d->states[s].context;\n    uVar4 = d->states[s].constraint;\n    uVar27 = (uint)uVar4;\n  }\n  uVar23 = (uint)bVar22;\n  if (((int)(uint)uVar4 >> 3 & uVar23 & 7) != 0) {\n    d->success[s] = d->success[s] | 2;\n    uVar23 = (uint)d->states[s].context;\n    uVar27 = (uint)d->states[s].constraint;\n  }\n  if ((uVar27 & 7 & uVar23) != 0) {\n    d->success[s] = d->success[s] | 1;\n  }\n  uVar14 = d->nleaves;\n  if (((long)(uVar14 << 4) < 0) || (uVar14 >> 0x3c != 0)) {\nLAB_00114c1c:\n                    /* WARNING: Subroutine does not return */\n    xalloc_die();\n  }\n  p_00 = (position *)xmalloc(uVar14 << 4);\n  local_f8 = d->states + s;\n  uVar36 = (local_f8->elems).nelem;\n  if (uVar36 == 0) {\n    lVar33 = 0;\n  }\n  else {\n    local_100 = 0;\n    ppVar15 = (local_f8->elems).elems;\n    lVar33 = 0;\n    ppVar37 = d->follows;\n    do {\n      uVar38 = 0;\n      ppVar29 = ppVar37 + ppVar15[local_100].index;\n      if (ppVar29->nelem != 0) {\n        do {\n          uVar36 = ppVar29->elems[uVar38].index;\n          uVar27 = ppVar29->elems[uVar38].constraint;\n          ppVar13 = p_00;\n          if (lVar33 == 0) {\n            if ((long)uVar14 < 1) {\n              lVar40 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar40 = 0;\n            lVar30 = lVar33;\n            do {\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            } while (lVar40 < lVar30);\nLAB_0011401d:\n            uVar12 = uVar14;\n            if ((long)uVar14 <= lVar33) {\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }\n            p_00 = ppVar13 + lVar40;\n            uVar14 = uVar12;\n            if (lVar40 < lVar33) {\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }\n          }\n          p_00->index = uVar36;\n          lVar33 = lVar33 + 1;\n          p_00->constraint = uVar27;\n          p_00 = ppVar13;\nLAB_00114119:\n          uVar38 = uVar38 + 1;\n          ppVar29 = ppVar37 + ppVar15[local_100].index;\n        } while (uVar38 < (ulong)ppVar29->nelem);\n        uVar36 = (local_f8->elems).nelem;\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar36);\n  }\n  uVar14 = d->nleaves;\n  if (((long)(uVar14 << 4) < 0) || (uVar14 >> 0x3c != 0)) goto LAB_00114c1c;\n  group.elems = (position *)xmalloc(uVar14 << 4);\n  group.nelem = 0;\n  label.w[0] = 0xffffffffffffffff;\n  label.w[1] = 0xffffffffffffffff;\n  label.w[2]._0_4_ = 0xffffffff;\n  label.w[2]._4_4_ = 0xffffffff;\n  label.w[3]._0_4_ = 0xffffffff;\n  label.w[3]._4_4_ = 0xffffffff;\n  group.alloc = uVar14;\n  if (lVar33 != 0) {\n    lVar40 = 0;\n    uVar27 = (uint)(uc >> 6);\n    uVar14 = 1L << (uc & 0x3f);\n    ppVar15 = p_00;\n    do {\n      while( true ) {\n        sVar26 = ppVar15->index;\n        uVar6 = *(undefined8 *)&ppVar15->constraint;\n        p = *ppVar15;\n        uVar23 = ppVar15->constraint;\n        uVar36 = d->tokens[sVar26];\n        local_110 = (uint)uVar14;\n        uStack_10c = (uint)(uVar14 >> 0x20);\n        if (uVar36 < 0x100) break;\n        if ((long)uVar36 < 0x114) {\n          if (uVar36 != 0x10a) goto LAB_0011435a;\n          pdVar31 = d->states + s;\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[d->canychar].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[d->canychar].w + 2);\n          bVar22 = (byte)(matches.w[uVar27] >> (uc & 0x3f)) & 1;\n          if ((pdVar31->context & uVar23 & 7) != 0) {\n            if ((pdVar31->mbps).nelem == 0) {\n              ppVar13 = (position *)xmalloc(0x10);\n              pVar10 = _UNK_001282a8;\n              pVar9 = _DAT_001282a0;\n              (pdVar31->mbps).elems = ppVar13;\n              (pdVar31->mbps).nelem = pVar9;\n              (pdVar31->mbps).alloc = pVar10;\n              pdVar31 = d->states + s;\n            }\n            insert(p,&pdVar31->mbps);\n          }\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar22 != 0) goto LAB_00114267;\n        }\n        else {\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2);\n          if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar22 = 0;\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) {\nLAB_0011485e:\n            bVar3 = d->states[s].context;\n            cVar19 = matches.w[0];\n            cVar32 = matches.w[2];\n            cVar35 = matches.w[1];\n            uVar36 = matches.w[3];\n            if (((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0) {\n              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];\n              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];\n              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ~(d->syntax).letters.w[0];\n              cVar35 = cVar35 & ~(d->syntax).letters.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = cVar32 & ~(d->syntax).letters.w[2];\n              uVar36 = uVar36 & ~(d->syntax).letters.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if ((uVar23 & bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);\n              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);\n              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0) goto LAB_0011435a;\n            if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011445b;\n          }\n        }\n        local_118 = (uint)cVar32;\n        uStack_114 = (uint)(cVar32 >> 0x20);\n        lVar40 = lVar40 + 1;\n        ppVar15 = ppVar15 + 1;\n        label.w[2]._0_4_ = ~local_118 & (uint)label.w[2];\n        label.w[2]._4_4_ = ~uStack_114 & label.w[2]._4_4_;\n        label.w[3]._0_4_ = ~local_110 & (uint)label.w[3];\n        label.w[3]._4_4_ = ~uStack_10c & label.w[3]._4_4_;\n        label.w[0] = ~cVar19 & label.w[0];\n        label.w[1] = ~cVar35 & label.w[1];\n        if (lVar40 == lVar33) goto LAB_001144c5;\n      }\n      matches.w[0] = 0;\n      matches.w[1] = 0;\n      matches.w[2] = 0;\n      matches.w[3] = 0;\n      matches.w[uVar36 >> 6 & 0x3ffffff] = 1L << ((byte)uVar36 & 0x3f);\n      if (uVar36 != uc) goto LAB_0011482f;\nLAB_0011423a:\n      cVar19 = matches.w[0];\n      cVar32 = matches.w[2];\n      cVar35 = matches.w[1];\n      if (uVar23 != 0x1ff) {\n        bVar22 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      pVar9 = group.alloc;\n      local_118 = (uint)cVar32;\n      uStack_114 = (uint)(cVar32 >> 0x20);\n      label.w[2]._0_4_ = local_118 & (uint)label.w[2];\n      label.w[2]._4_4_ = uStack_114 & label.w[2]._4_4_;\n      label.w[3]._0_4_ = local_110 & (uint)label.w[3];\n      label.w[3]._4_4_ = uStack_10c & label.w[3]._4_4_;\n      label.w[0] = cVar19 & label.w[0];\n      label.w[1] = cVar35 & label.w[1];\n      if (group.alloc <= group.nelem) {\n        lVar30 = (group.alloc >> 1) + group.alloc;\n        if ((SCARRY8(group.alloc >> 1,group.alloc)) ||\n           (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))) {\n          lVar30 = 0x7ffffffffffffff;\n          n = 0x7ffffffffffffff0;\n        }\n        else if ((long)n < 0x80) {\n          n = 0x80;\n          lVar30 = 8;\n        }\n        if (group.elems == (position *)0x0) {\n          group.alloc = 0;\n        }\n        if ((lVar30 == pVar9 || lVar30 - pVar9 < 0) &&\n           ((lVar30 = pVar9 + 1, SCARRY8(pVar9,1) ||\n            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        group.elems = (position *)xrealloc(group.elems,n);\n        group.alloc = lVar30;\n      }\n      group.elems[group.nelem].index = sVar26;\n      group.elems[group.nelem].constraint = (uint)uVar6;\n      group.nelem = group.nelem + 1;\nLAB_0011435a:\n      lVar40 = lVar40 + 1;\n      ppVar15 = ppVar15 + 1;\n    } while (lVar40 != lVar33);\n  }\nLAB_001144c5:\n  uVar14 = d->nleaves;\n  if ((long)(uVar14 << 4) < 0 || uVar14 >> 0x3c != 0) goto LAB_00114c1c;\n  tmp.elems = (position *)xmalloc(uVar14 << 4);\n  tmp.nelem = 0;\n  tmp.alloc = uVar14;\n  if (group.nelem < 1) {\n    if (d->searchflag == false) {\n      sVar16 = -1;\n      sVar34 = -1;\n      sVar17 = sVar16;\n    }\n    else {\n      sVar34 = d->initstate_notbol;\n      sVar16 = 0;\n      sVar17 = (long)(d->min_trcount + L'\xffffffff');\n    }\n    goto LAB_001146d6;\n  }\n  if (d->searchflag != false) {\n    if ((d->localeinfo).multibyte != false) {\n      lVar33 = 0;\n      do {\n        lVar40 = lVar33 + 1;\n        if ((d->multibyte_prop[group.elems[lVar33].index] & 1U) == 0) goto LAB_00114536;\n        lVar33 = lVar40;\n      } while (lVar40 != group.nelem);\n    }\n    merge_constrained(&d->states->elems,(position_set *)&(d->states->elems).nelem,(uint)&group,\n                      (position_set *)&group.nelem,(position_set *)0xffffffff,&tmp);\n    copy((EVP_PKEY_CTX *)&tmp,(EVP_PKEY_CTX *)&tmp.nelem);\n  }\nLAB_00114536:\n  uVar14 = (d->syntax).newline.w[0];\n  uVar36 = (d->syntax).letters.w[0];\n  uVar27 = (uint)((label.w[0] & uVar14) != 0) << 2;\n  if ((label.w[0] & uVar36) != 0) {\n    uVar27 = uVar27 | 2;\n  }\n  uVar38 = (d->syntax).newline.w[1];\n  if ((~(uVar14 | uVar36) & label.w[0]) != 0) {\n    uVar27 = uVar27 | 1;\n  }\n  if ((label.w[1] & uVar38) != 0) {\n    uVar27 = uVar27 | 4;\n  }\n  uVar14 = (d->syntax).letters.w[1];\n  if ((label.w[1] & uVar14) != 0) {\n    uVar27 = uVar27 | 2;\n  }\n  uVar36 = CONCAT44(label.w[2]._4_4_,(uint)label.w[2]);\n  if ((~(uVar38 | uVar14) & label.w[1]) != 0) {\n    uVar27 = uVar27 | 1;\n  }\n  uVar14 = (d->syntax).newline.w[2];\n  if ((uVar14 & uVar36) != 0) {\n    uVar27 = uVar27 | 4;\n  }\n  uVar38 = (d->syntax).letters.w[2];\n  if ((uVar38 & uVar36) != 0) {\n    uVar27 = uVar27 | 2;\n  }\n  uVar7 = CONCAT44(label.w[3]._4_4_,(uint)label.w[3]);\n  uVar12 = (d->syntax).newline.w[3];\n  if ((~(uVar38 | uVar14) & uVar36) != 0) {\n    uVar27 = uVar27 | 1;\n  }\n  if ((uVar12 & uVar7) != 0) {\n    uVar27 = uVar27 | 4;\n  }\n  uVar14 = (d->syntax).letters.w[3];\n  if ((uVar7 & uVar14) != 0) {\n    uVar27 = uVar27 | 2;\n  }\n  if ((~(uVar12 | uVar14) & uVar7) == 0) {\n    if (group.nelem != 0) goto LAB_0011464f;\n    if (uVar27 != 0) goto LAB_00114c0f;\n    sVar16 = -1;\n    sVar17 = -1;\n    sVar34 = sVar16;\n  }\n  else {\n    uVar27 = uVar27 | 1;\n    if (group.nelem == 0) {\nLAB_00114c0f:\n      uVar39 = 0;\n      uVar23 = 0;\n      wVar25 = L'\a';\nLAB_00114bf3:\n      sVar34 = state_index(d,&group,wVar25);\n    }\n    else {\nLAB_0011464f:\n      uVar24 = 0;\n      ppVar15 = group.elems;\n      do {\n        psVar8 = &ppVar15->index;\n        ppVar15 = ppVar15 + 1;\n        uVar24 = uVar24 | d->separates[*psVar8];\n      } while (group.elems + group.nelem != ppVar15);\n      sVar34 = -1;\n      uVar39 = uVar24 & uVar27 & 2;\n      uVar23 = uVar24 & uVar27 & 4;\n      if ((~uVar24 & uVar27) != 0) {\n        wVar25 = uVar24 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    sVar16 = sVar34;\n    if (uVar23 != 0) {\n      sVar16 = state_index(d,&group,L'\x04');\n    }\n    sVar17 = sVar34;\n    if (uVar39 != 0) {\n      sVar17 = state_index(d,&group,L'\x02');\n    }\n  }\n  realloc_trans_if_necessary(d);\nLAB_001146d6:\n  uVar14 = 0;\n  do {\n    while ((label.w[uVar14 >> 6 & 0x3ffffff] >> (uVar14 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar14 = uVar14 + 1;\n      if (uVar14 == 0x100) goto LAB_00114728;\n    }\n    cVar2 = (d->syntax).sbit[uVar14];\n    if (cVar2 != '\x02') {\n      sVar18 = sVar16;\n      if (cVar2 != '\x04') {\n        sVar18 = sVar34;\n      }\n      local_e0[uVar14] = sVar18;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar14] = sVar17;\n    uVar14 = uVar14 + 1;\n  } while (uVar14 != 0x100);\nLAB_00114728:\n  free(group.elems);\n  free(p_00);\n  free(tmp.elems);\n  bVar22 = (d->syntax).eolbyte;\n  if ((label.w[bVar22 >> 6] >> (bVar22 & 0x3f) & 1) != 0) {\n    d->newlines[s] = local_e0[bVar22];\n    local_e0[(d->syntax).eolbyte] = -1;\n  }\n  if (lVar5 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return local_e0[uc];\n}" type_identifier (function_declarator "build_state(state_num s,dfa *d,uchar uc)" identifier (parameter_list "(state_num s,dfa *d,uchar uc)" ( (parameter_declaration "state_num s" type_identifier identifier) , (parameter_declaration "dfa *d" type_identifier (pointer_declarator "*d" * identifier)) , (parameter_declaration "uchar uc" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  char cVar2;\n  byte bVar3;\n  ushort uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  position p;\n  size_t *psVar8;\n  ptrdiff_t pVar9;\n  ptrdiff_t pVar10;\n  position *p_00;\n  long lVar11;\n  ulong uVar12;\n  position *ppVar13;\n  ulong uVar14;\n  position *ppVar15;\n  state_num sVar16;\n  state_num sVar17;\n  state_num sVar18;\n  charclass_word cVar19;\n  state_num *psVar20;\n  state_num **ppsVar21;\n  byte bVar22;\n  uint uVar23;\n  uint uVar24;\n  wchar_t wVar25;\n  size_t sVar26;\n  uint uVar27;\n  state_num **ppsVar28;\n  position_set *ppVar29;\n  long lVar30;\n  dfa_state *pdVar31;\n  charclass_word cVar32;\n  long lVar33;\n  state_num sVar34;\n  size_t n;\n  charclass_word cVar35;\n  ulong uVar36;\n  position_set *ppVar37;\n  ulong uVar38;\n  uint uVar39;\n  long lVar40;\n  long in_FS_OFFSET;\n  uint local_118;\n  uint uStack_114;\n  uint local_110;\n  uint uStack_10c;\n  ulong local_100;\n  dfa_state *local_f8;\n  state_num *local_e0;\n  position_set group;\n  position_set tmp;\n  charclass label;\n  charclass matches;\n  \n  lVar5 = *(long *)(in_FS_OFFSET + 0x28);\n  ppsVar21 = d->trans;\n  ppsVar28 = ppsVar21;\n  if (d->states[s].constraint != 0) {\n    ppsVar28 = d->fails;\n  }\n  local_e0 = ppsVar28[s];\n  if (local_e0 == (state_num *)0x0) {\n    if (d->trcount < L'Ѐ') {\n      wVar25 = d->trcount + L'\x01';\n    }\n    else {\n      lVar33 = (long)d->min_trcount;\n      if (lVar33 < d->tralloc) {\n        do {\n          free(ppsVar21[lVar33]);\n          free(d->fails[lVar33]);\n          d->fails[lVar33] = (state_num *)0x0;\n          ppsVar21 = d->trans;\n          ppsVar21[lVar33] = (state_num *)0x0;\n          lVar33 = lVar33 + 1;\n        } while (lVar33 < d->tralloc);\n      }\n      wVar25 = L'\x01';\n    }\n    d->trcount = wVar25;\n    local_e0 = (state_num *)xmalloc(0x800);\n    sVar16 = _UNK_00128298;\n    sVar34 = _DAT_00128290;\n    ppsVar28[s] = local_e0;\n    psVar20 = local_e0;\n    do {\n      *psVar20 = sVar34;\n      psVar20[1] = sVar16;\n      psVar20 = psVar20 + 2;\n    } while (local_e0 + 0x100 != psVar20);\n  }\n  d->success[s] = '\0';\n  bVar22 = d->states[s].context;\n  uVar4 = d->states[s].constraint;\n  uVar27 = (uint)uVar4;\n  if (((int)uVar27 >> 6 & (uint)bVar22 & 7) != 0) {\n    d->success[s] = d->success[s] | 4;\n    bVar22 = d->states[s].context;\n    uVar4 = d->states[s].constraint;\n    uVar27 = (uint)uVar4;\n  }\n  uVar23 = (uint)bVar22;\n  if (((int)(uint)uVar4 >> 3 & uVar23 & 7) != 0) {\n    d->success[s] = d->success[s] | 2;\n    uVar23 = (uint)d->states[s].context;\n    uVar27 = (uint)d->states[s].constraint;\n  }\n  if ((uVar27 & 7 & uVar23) != 0) {\n    d->success[s] = d->success[s] | 1;\n  }\n  uVar14 = d->nleaves;\n  if (((long)(uVar14 << 4) < 0) || (uVar14 >> 0x3c != 0)) {\nLAB_00114c1c:\n                    /* WARNING: Subroutine does not return */\n    xalloc_die();\n  }\n  p_00 = (position *)xmalloc(uVar14 << 4);\n  local_f8 = d->states + s;\n  uVar36 = (local_f8->elems).nelem;\n  if (uVar36 == 0) {\n    lVar33 = 0;\n  }\n  else {\n    local_100 = 0;\n    ppVar15 = (local_f8->elems).elems;\n    lVar33 = 0;\n    ppVar37 = d->follows;\n    do {\n      uVar38 = 0;\n      ppVar29 = ppVar37 + ppVar15[local_100].index;\n      if (ppVar29->nelem != 0) {\n        do {\n          uVar36 = ppVar29->elems[uVar38].index;\n          uVar27 = ppVar29->elems[uVar38].constraint;\n          ppVar13 = p_00;\n          if (lVar33 == 0) {\n            if ((long)uVar14 < 1) {\n              lVar40 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar40 = 0;\n            lVar30 = lVar33;\n            do {\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            } while (lVar40 < lVar30);\nLAB_0011401d:\n            uVar12 = uVar14;\n            if ((long)uVar14 <= lVar33) {\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }\n            p_00 = ppVar13 + lVar40;\n            uVar14 = uVar12;\n            if (lVar40 < lVar33) {\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }\n          }\n          p_00->index = uVar36;\n          lVar33 = lVar33 + 1;\n          p_00->constraint = uVar27;\n          p_00 = ppVar13;\nLAB_00114119:\n          uVar38 = uVar38 + 1;\n          ppVar29 = ppVar37 + ppVar15[local_100].index;\n        } while (uVar38 < (ulong)ppVar29->nelem);\n        uVar36 = (local_f8->elems).nelem;\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar36);\n  }\n  uVar14 = d->nleaves;\n  if (((long)(uVar14 << 4) < 0) || (uVar14 >> 0x3c != 0)) goto LAB_00114c1c;\n  group.elems = (position *)xmalloc(uVar14 << 4);\n  group.nelem = 0;\n  label.w[0] = 0xffffffffffffffff;\n  label.w[1] = 0xffffffffffffffff;\n  label.w[2]._0_4_ = 0xffffffff;\n  label.w[2]._4_4_ = 0xffffffff;\n  label.w[3]._0_4_ = 0xffffffff;\n  label.w[3]._4_4_ = 0xffffffff;\n  group.alloc = uVar14;\n  if (lVar33 != 0) {\n    lVar40 = 0;\n    uVar27 = (uint)(uc >> 6);\n    uVar14 = 1L << (uc & 0x3f);\n    ppVar15 = p_00;\n    do {\n      while( true ) {\n        sVar26 = ppVar15->index;\n        uVar6 = *(undefined8 *)&ppVar15->constraint;\n        p = *ppVar15;\n        uVar23 = ppVar15->constraint;\n        uVar36 = d->tokens[sVar26];\n        local_110 = (uint)uVar14;\n        uStack_10c = (uint)(uVar14 >> 0x20);\n        if (uVar36 < 0x100) break;\n        if ((long)uVar36 < 0x114) {\n          if (uVar36 != 0x10a) goto LAB_0011435a;\n          pdVar31 = d->states + s;\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[d->canychar].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[d->canychar].w + 2);\n          bVar22 = (byte)(matches.w[uVar27] >> (uc & 0x3f)) & 1;\n          if ((pdVar31->context & uVar23 & 7) != 0) {\n            if ((pdVar31->mbps).nelem == 0) {\n              ppVar13 = (position *)xmalloc(0x10);\n              pVar10 = _UNK_001282a8;\n              pVar9 = _DAT_001282a0;\n              (pdVar31->mbps).elems = ppVar13;\n              (pdVar31->mbps).nelem = pVar9;\n              (pdVar31->mbps).alloc = pVar10;\n              pdVar31 = d->states + s;\n            }\n            insert(p,&pdVar31->mbps);\n          }\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar22 != 0) goto LAB_00114267;\n        }\n        else {\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2);\n          if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar22 = 0;\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) {\nLAB_0011485e:\n            bVar3 = d->states[s].context;\n            cVar19 = matches.w[0];\n            cVar32 = matches.w[2];\n            cVar35 = matches.w[1];\n            uVar36 = matches.w[3];\n            if (((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0) {\n              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];\n              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];\n              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ~(d->syntax).letters.w[0];\n              cVar35 = cVar35 & ~(d->syntax).letters.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = cVar32 & ~(d->syntax).letters.w[2];\n              uVar36 = uVar36 & ~(d->syntax).letters.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if ((uVar23 & bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);\n              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);\n              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0) goto LAB_0011435a;\n            if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011445b;\n          }\n        }\n        local_118 = (uint)cVar32;\n        uStack_114 = (uint)(cVar32 >> 0x20);\n        lVar40 = lVar40 + 1;\n        ppVar15 = ppVar15 + 1;\n        label.w[2]._0_4_ = ~local_118 & (uint)label.w[2];\n        label.w[2]._4_4_ = ~uStack_114 & label.w[2]._4_4_;\n        label.w[3]._0_4_ = ~local_110 & (uint)label.w[3];\n        label.w[3]._4_4_ = ~uStack_10c & label.w[3]._4_4_;\n        label.w[0] = ~cVar19 & label.w[0];\n        label.w[1] = ~cVar35 & label.w[1];\n        if (lVar40 == lVar33) goto LAB_001144c5;\n      }\n      matches.w[0] = 0;\n      matches.w[1] = 0;\n      matches.w[2] = 0;\n      matches.w[3] = 0;\n      matches.w[uVar36 >> 6 & 0x3ffffff] = 1L << ((byte)uVar36 & 0x3f);\n      if (uVar36 != uc) goto LAB_0011482f;\nLAB_0011423a:\n      cVar19 = matches.w[0];\n      cVar32 = matches.w[2];\n      cVar35 = matches.w[1];\n      if (uVar23 != 0x1ff) {\n        bVar22 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      pVar9 = group.alloc;\n      local_118 = (uint)cVar32;\n      uStack_114 = (uint)(cVar32 >> 0x20);\n      label.w[2]._0_4_ = local_118 & (uint)label.w[2];\n      label.w[2]._4_4_ = uStack_114 & label.w[2]._4_4_;\n      label.w[3]._0_4_ = local_110 & (uint)label.w[3];\n      label.w[3]._4_4_ = uStack_10c & label.w[3]._4_4_;\n      label.w[0] = cVar19 & label.w[0];\n      label.w[1] = cVar35 & label.w[1];\n      if (group.alloc <= group.nelem) {\n        lVar30 = (group.alloc >> 1) + group.alloc;\n        if ((SCARRY8(group.alloc >> 1,group.alloc)) ||\n           (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))) {\n          lVar30 = 0x7ffffffffffffff;\n          n = 0x7ffffffffffffff0;\n        }\n        else if ((long)n < 0x80) {\n          n = 0x80;\n          lVar30 = 8;\n        }\n        if (group.elems == (position *)0x0) {\n          group.alloc = 0;\n        }\n        if ((lVar30 == pVar9 || lVar30 - pVar9 < 0) &&\n           ((lVar30 = pVar9 + 1, SCARRY8(pVar9,1) ||\n            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        group.elems = (position *)xrealloc(group.elems,n);\n        group.alloc = lVar30;\n      }\n      group.elems[group.nelem].index = sVar26;\n      group.elems[group.nelem].constraint = (uint)uVar6;\n      group.nelem = group.nelem + 1;\nLAB_0011435a:\n      lVar40 = lVar40 + 1;\n      ppVar15 = ppVar15 + 1;\n    } while (lVar40 != lVar33);\n  }\nLAB_001144c5:\n  uVar14 = d->nleaves;\n  if ((long)(uVar14 << 4) < 0 || uVar14 >> 0x3c != 0) goto LAB_00114c1c;\n  tmp.elems = (position *)xmalloc(uVar14 << 4);\n  tmp.nelem = 0;\n  tmp.alloc = uVar14;\n  if (group.nelem < 1) {\n    if (d->searchflag == false) {\n      sVar16 = -1;\n      sVar34 = -1;\n      sVar17 = sVar16;\n    }\n    else {\n      sVar34 = d->initstate_notbol;\n      sVar16 = 0;\n      sVar17 = (long)(d->min_trcount + L'\xffffffff');\n    }\n    goto LAB_001146d6;\n  }\n  if (d->searchflag != false) {\n    if ((d->localeinfo).multibyte != false) {\n      lVar33 = 0;\n      do {\n        lVar40 = lVar33 + 1;\n        if ((d->multibyte_prop[group.elems[lVar33].index] & 1U) == 0) goto LAB_00114536;\n        lVar33 = lVar40;\n      } while (lVar40 != group.nelem);\n    }\n    merge_constrained(&d->states->elems,(position_set *)&(d->states->elems).nelem,(uint)&group,\n                      (position_set *)&group.nelem,(position_set *)0xffffffff,&tmp);\n    copy((EVP_PKEY_CTX *)&tmp,(EVP_PKEY_CTX *)&tmp.nelem);\n  }\nLAB_00114536:\n  uVar14 = (d->syntax).newline.w[0];\n  uVar36 = (d->syntax).letters.w[0];\n  uVar27 = (uint)((label.w[0] & uVar14) != 0) << 2;\n  if ((label.w[0] & uVar36) != 0) {\n    uVar27 = uVar27 | 2;\n  }\n  uVar38 = (d->syntax).newline.w[1];\n  if ((~(uVar14 | uVar36) & label.w[0]) != 0) {\n    uVar27 = uVar27 | 1;\n  }\n  if ((label.w[1] & uVar38) != 0) {\n    uVar27 = uVar27 | 4;\n  }\n  uVar14 = (d->syntax).letters.w[1];\n  if ((label.w[1] & uVar14) != 0) {\n    uVar27 = uVar27 | 2;\n  }\n  uVar36 = CONCAT44(label.w[2]._4_4_,(uint)label.w[2]);\n  if ((~(uVar38 | uVar14) & label.w[1]) != 0) {\n    uVar27 = uVar27 | 1;\n  }\n  uVar14 = (d->syntax).newline.w[2];\n  if ((uVar14 & uVar36) != 0) {\n    uVar27 = uVar27 | 4;\n  }\n  uVar38 = (d->syntax).letters.w[2];\n  if ((uVar38 & uVar36) != 0) {\n    uVar27 = uVar27 | 2;\n  }\n  uVar7 = CONCAT44(label.w[3]._4_4_,(uint)label.w[3]);\n  uVar12 = (d->syntax).newline.w[3];\n  if ((~(uVar38 | uVar14) & uVar36) != 0) {\n    uVar27 = uVar27 | 1;\n  }\n  if ((uVar12 & uVar7) != 0) {\n    uVar27 = uVar27 | 4;\n  }\n  uVar14 = (d->syntax).letters.w[3];\n  if ((uVar7 & uVar14) != 0) {\n    uVar27 = uVar27 | 2;\n  }\n  if ((~(uVar12 | uVar14) & uVar7) == 0) {\n    if (group.nelem != 0) goto LAB_0011464f;\n    if (uVar27 != 0) goto LAB_00114c0f;\n    sVar16 = -1;\n    sVar17 = -1;\n    sVar34 = sVar16;\n  }\n  else {\n    uVar27 = uVar27 | 1;\n    if (group.nelem == 0) {\nLAB_00114c0f:\n      uVar39 = 0;\n      uVar23 = 0;\n      wVar25 = L'\a';\nLAB_00114bf3:\n      sVar34 = state_index(d,&group,wVar25);\n    }\n    else {\nLAB_0011464f:\n      uVar24 = 0;\n      ppVar15 = group.elems;\n      do {\n        psVar8 = &ppVar15->index;\n        ppVar15 = ppVar15 + 1;\n        uVar24 = uVar24 | d->separates[*psVar8];\n      } while (group.elems + group.nelem != ppVar15);\n      sVar34 = -1;\n      uVar39 = uVar24 & uVar27 & 2;\n      uVar23 = uVar24 & uVar27 & 4;\n      if ((~uVar24 & uVar27) != 0) {\n        wVar25 = uVar24 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    sVar16 = sVar34;\n    if (uVar23 != 0) {\n      sVar16 = state_index(d,&group,L'\x04');\n    }\n    sVar17 = sVar34;\n    if (uVar39 != 0) {\n      sVar17 = state_index(d,&group,L'\x02');\n    }\n  }\n  realloc_trans_if_necessary(d);\nLAB_001146d6:\n  uVar14 = 0;\n  do {\n    while ((label.w[uVar14 >> 6 & 0x3ffffff] >> (uVar14 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar14 = uVar14 + 1;\n      if (uVar14 == 0x100) goto LAB_00114728;\n    }\n    cVar2 = (d->syntax).sbit[uVar14];\n    if (cVar2 != '\x02') {\n      sVar18 = sVar16;\n      if (cVar2 != '\x04') {\n        sVar18 = sVar34;\n      }\n      local_e0[uVar14] = sVar18;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar14] = sVar17;\n    uVar14 = uVar14 + 1;\n  } while (uVar14 != 0x100);\nLAB_00114728:\n  free(group.elems);\n  free(p_00);\n  free(tmp.elems);\n  bVar22 = (d->syntax).eolbyte;\n  if ((label.w[bVar22 >> 6] >> (bVar22 & 0x3f) & 1) != 0) {\n    d->newlines[s] = local_e0[bVar22];\n    local_e0[(d->syntax).eolbyte] = -1;\n  }\n  if (lVar5 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return local_e0[uc];\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "position p;" type_identifier identifier ;) (declaration "size_t *psVar8;" primitive_type (pointer_declarator "*psVar8" * identifier) ;) (declaration "ptrdiff_t pVar9;" primitive_type identifier ;) (declaration "ptrdiff_t pVar10;" primitive_type identifier ;) (declaration "position *p_00;" type_identifier (pointer_declarator "*p_00" * identifier) ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "position *ppVar13;" type_identifier (pointer_declarator "*ppVar13" * identifier) ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "position *ppVar15;" type_identifier (pointer_declarator "*ppVar15" * identifier) ;) (declaration "state_num sVar16;" type_identifier identifier ;) (declaration "state_num sVar17;" type_identifier identifier ;) (declaration "state_num sVar18;" type_identifier identifier ;) (declaration "charclass_word cVar19;" type_identifier identifier ;) (declaration "state_num *psVar20;" type_identifier (pointer_declarator "*psVar20" * identifier) ;) (declaration "state_num **ppsVar21;" type_identifier (pointer_declarator "**ppsVar21" * (pointer_declarator "*ppsVar21" * identifier)) ;) (declaration "byte bVar22;" type_identifier identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "uint uVar24;" type_identifier identifier ;) (declaration "wchar_t wVar25;" type_identifier identifier ;) (declaration "size_t sVar26;" primitive_type identifier ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "state_num **ppsVar28;" type_identifier (pointer_declarator "**ppsVar28" * (pointer_declarator "*ppsVar28" * identifier)) ;) (declaration "position_set *ppVar29;" type_identifier (pointer_declarator "*ppVar29" * identifier) ;) (declaration "long lVar30;" (sized_type_specifier "long" long) identifier ;) (declaration "dfa_state *pdVar31;" type_identifier (pointer_declarator "*pdVar31" * identifier) ;) (declaration "charclass_word cVar32;" type_identifier identifier ;) (declaration "long lVar33;" (sized_type_specifier "long" long) identifier ;) (declaration "state_num sVar34;" type_identifier identifier ;) (declaration "size_t n;" primitive_type identifier ;) (declaration "charclass_word cVar35;" type_identifier identifier ;) (declaration "ulong uVar36;" type_identifier identifier ;) (declaration "position_set *ppVar37;" type_identifier (pointer_declarator "*ppVar37" * identifier) ;) (declaration "ulong uVar38;" type_identifier identifier ;) (declaration "uint uVar39;" type_identifier identifier ;) (declaration "long lVar40;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "uint local_118;" type_identifier identifier ;) (declaration "uint uStack_114;" type_identifier identifier ;) (declaration "uint local_110;" type_identifier identifier ;) (declaration "uint uStack_10c;" type_identifier identifier ;) (declaration "ulong local_100;" type_identifier identifier ;) (declaration "dfa_state *local_f8;" type_identifier (pointer_declarator "*local_f8" * identifier) ;) (declaration "state_num *local_e0;" type_identifier (pointer_declarator "*local_e0" * identifier) ;) (declaration "position_set group;" type_identifier identifier ;) (declaration "position_set tmp;" type_identifier identifier ;) (declaration "charclass label;" type_identifier identifier ;) (declaration "charclass matches;" type_identifier identifier ;) (expression_statement "lVar5 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar5 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "ppsVar21 = d->trans;" (assignment_expression "ppsVar21 = d->trans" identifier = (field_expression "d->trans" identifier -> field_identifier)) ;) (expression_statement "ppsVar28 = ppsVar21;" (assignment_expression "ppsVar28 = ppsVar21" identifier = identifier) ;) (if_statement "if (d->states[s].constraint != 0) {\n    ppsVar28 = d->fails;\n  }" if (parenthesized_expression "(d->states[s].constraint != 0)" ( (binary_expression "d->states[s].constraint != 0" (field_expression "d->states[s].constraint" (subscript_expression "d->states[s]" (field_expression "d->states" identifier -> field_identifier) [ identifier ]) . field_identifier) != number_literal) )) (compound_statement "{\n    ppsVar28 = d->fails;\n  }" { (expression_statement "ppsVar28 = d->fails;" (assignment_expression "ppsVar28 = d->fails" identifier = (field_expression "d->fails" identifier -> field_identifier)) ;) })) (expression_statement "local_e0 = ppsVar28[s];" (assignment_expression "local_e0 = ppsVar28[s]" identifier = (subscript_expression "ppsVar28[s]" identifier [ identifier ])) ;) (if_statement "if (local_e0 == (state_num *)0x0) {\n    if (d->trcount < L'Ѐ') {\n      wVar25 = d->trcount + L'\x01';\n    }\n    else {\n      lVar33 = (long)d->min_trcount;\n      if (lVar33 < d->tralloc) {\n        do {\n          free(ppsVar21[lVar33]);\n          free(d->fails[lVar33]);\n          d->fails[lVar33] = (state_num *)0x0;\n          ppsVar21 = d->trans;\n          ppsVar21[lVar33] = (state_num *)0x0;\n          lVar33 = lVar33 + 1;\n        } while (lVar33 < d->tralloc);\n      }\n      wVar25 = L'\x01';\n    }\n    d->trcount = wVar25;\n    local_e0 = (state_num *)xmalloc(0x800);\n    sVar16 = _UNK_00128298;\n    sVar34 = _DAT_00128290;\n    ppsVar28[s] = local_e0;\n    psVar20 = local_e0;\n    do {\n      *psVar20 = sVar34;\n      psVar20[1] = sVar16;\n      psVar20 = psVar20 + 2;\n    } while (local_e0 + 0x100 != psVar20);\n  }" if (parenthesized_expression "(local_e0 == (state_num *)0x0)" ( (binary_expression "local_e0 == (state_num *)0x0" identifier == (cast_expression "(state_num *)0x0" ( (type_descriptor "state_num *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (d->trcount < L'Ѐ') {\n      wVar25 = d->trcount + L'\x01';\n    }\n    else {\n      lVar33 = (long)d->min_trcount;\n      if (lVar33 < d->tralloc) {\n        do {\n          free(ppsVar21[lVar33]);\n          free(d->fails[lVar33]);\n          d->fails[lVar33] = (state_num *)0x0;\n          ppsVar21 = d->trans;\n          ppsVar21[lVar33] = (state_num *)0x0;\n          lVar33 = lVar33 + 1;\n        } while (lVar33 < d->tralloc);\n      }\n      wVar25 = L'\x01';\n    }\n    d->trcount = wVar25;\n    local_e0 = (state_num *)xmalloc(0x800);\n    sVar16 = _UNK_00128298;\n    sVar34 = _DAT_00128290;\n    ppsVar28[s] = local_e0;\n    psVar20 = local_e0;\n    do {\n      *psVar20 = sVar34;\n      psVar20[1] = sVar16;\n      psVar20 = psVar20 + 2;\n    } while (local_e0 + 0x100 != psVar20);\n  }" { (if_statement "if (d->trcount < L'Ѐ') {\n      wVar25 = d->trcount + L'\x01';\n    }\n    else {\n      lVar33 = (long)d->min_trcount;\n      if (lVar33 < d->tralloc) {\n        do {\n          free(ppsVar21[lVar33]);\n          free(d->fails[lVar33]);\n          d->fails[lVar33] = (state_num *)0x0;\n          ppsVar21 = d->trans;\n          ppsVar21[lVar33] = (state_num *)0x0;\n          lVar33 = lVar33 + 1;\n        } while (lVar33 < d->tralloc);\n      }\n      wVar25 = L'\x01';\n    }" if (parenthesized_expression "(d->trcount < L'Ѐ')" ( (binary_expression "d->trcount < L'Ѐ'" (field_expression "d->trcount" identifier -> field_identifier) < (char_literal "L'Ѐ'" L' character ')) )) (compound_statement "{\n      wVar25 = d->trcount + L'\x01';\n    }" { (expression_statement "wVar25 = d->trcount + L'\x01';" (assignment_expression "wVar25 = d->trcount + L'\x01'" identifier = (binary_expression "d->trcount + L'\x01'" (field_expression "d->trcount" identifier -> field_identifier) + (char_literal "L'\x01'" L' escape_sequence '))) ;) }) (else_clause "else {\n      lVar33 = (long)d->min_trcount;\n      if (lVar33 < d->tralloc) {\n        do {\n          free(ppsVar21[lVar33]);\n          free(d->fails[lVar33]);\n          d->fails[lVar33] = (state_num *)0x0;\n          ppsVar21 = d->trans;\n          ppsVar21[lVar33] = (state_num *)0x0;\n          lVar33 = lVar33 + 1;\n        } while (lVar33 < d->tralloc);\n      }\n      wVar25 = L'\x01';\n    }" else (compound_statement "{\n      lVar33 = (long)d->min_trcount;\n      if (lVar33 < d->tralloc) {\n        do {\n          free(ppsVar21[lVar33]);\n          free(d->fails[lVar33]);\n          d->fails[lVar33] = (state_num *)0x0;\n          ppsVar21 = d->trans;\n          ppsVar21[lVar33] = (state_num *)0x0;\n          lVar33 = lVar33 + 1;\n        } while (lVar33 < d->tralloc);\n      }\n      wVar25 = L'\x01';\n    }" { (expression_statement "lVar33 = (long)d->min_trcount;" (assignment_expression "lVar33 = (long)d->min_trcount" identifier = (cast_expression "(long)d->min_trcount" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "d->min_trcount" identifier -> field_identifier))) ;) (if_statement "if (lVar33 < d->tralloc) {\n        do {\n          free(ppsVar21[lVar33]);\n          free(d->fails[lVar33]);\n          d->fails[lVar33] = (state_num *)0x0;\n          ppsVar21 = d->trans;\n          ppsVar21[lVar33] = (state_num *)0x0;\n          lVar33 = lVar33 + 1;\n        } while (lVar33 < d->tralloc);\n      }" if (parenthesized_expression "(lVar33 < d->tralloc)" ( (binary_expression "lVar33 < d->tralloc" identifier < (field_expression "d->tralloc" identifier -> field_identifier)) )) (compound_statement "{\n        do {\n          free(ppsVar21[lVar33]);\n          free(d->fails[lVar33]);\n          d->fails[lVar33] = (state_num *)0x0;\n          ppsVar21 = d->trans;\n          ppsVar21[lVar33] = (state_num *)0x0;\n          lVar33 = lVar33 + 1;\n        } while (lVar33 < d->tralloc);\n      }" { (do_statement "do {\n          free(ppsVar21[lVar33]);\n          free(d->fails[lVar33]);\n          d->fails[lVar33] = (state_num *)0x0;\n          ppsVar21 = d->trans;\n          ppsVar21[lVar33] = (state_num *)0x0;\n          lVar33 = lVar33 + 1;\n        } while (lVar33 < d->tralloc);" do (compound_statement "{\n          free(ppsVar21[lVar33]);\n          free(d->fails[lVar33]);\n          d->fails[lVar33] = (state_num *)0x0;\n          ppsVar21 = d->trans;\n          ppsVar21[lVar33] = (state_num *)0x0;\n          lVar33 = lVar33 + 1;\n        }" { (expression_statement "free(ppsVar21[lVar33]);" (call_expression "free(ppsVar21[lVar33])" identifier (argument_list "(ppsVar21[lVar33])" ( (subscript_expression "ppsVar21[lVar33]" identifier [ identifier ]) ))) ;) (expression_statement "free(d->fails[lVar33]);" (call_expression "free(d->fails[lVar33])" identifier (argument_list "(d->fails[lVar33])" ( (subscript_expression "d->fails[lVar33]" (field_expression "d->fails" identifier -> field_identifier) [ identifier ]) ))) ;) (expression_statement "d->fails[lVar33] = (state_num *)0x0;" (assignment_expression "d->fails[lVar33] = (state_num *)0x0" (subscript_expression "d->fails[lVar33]" (field_expression "d->fails" identifier -> field_identifier) [ identifier ]) = (cast_expression "(state_num *)0x0" ( (type_descriptor "state_num *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppsVar21 = d->trans;" (assignment_expression "ppsVar21 = d->trans" identifier = (field_expression "d->trans" identifier -> field_identifier)) ;) (expression_statement "ppsVar21[lVar33] = (state_num *)0x0;" (assignment_expression "ppsVar21[lVar33] = (state_num *)0x0" (subscript_expression "ppsVar21[lVar33]" identifier [ identifier ]) = (cast_expression "(state_num *)0x0" ( (type_descriptor "state_num *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "lVar33 = lVar33 + 1;" (assignment_expression "lVar33 = lVar33 + 1" identifier = (binary_expression "lVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar33 < d->tralloc)" ( (binary_expression "lVar33 < d->tralloc" identifier < (field_expression "d->tralloc" identifier -> field_identifier)) )) ;) })) (expression_statement "wVar25 = L'\x01';" (assignment_expression "wVar25 = L'\x01'" identifier = (char_literal "L'\x01'" L' escape_sequence ')) ;) }))) (expression_statement "d->trcount = wVar25;" (assignment_expression "d->trcount = wVar25" (field_expression "d->trcount" identifier -> field_identifier) = identifier) ;) (expression_statement "local_e0 = (state_num *)xmalloc(0x800);" (assignment_expression "local_e0 = (state_num *)xmalloc(0x800)" identifier = (cast_expression "(state_num *)xmalloc(0x800)" ( (type_descriptor "state_num *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x800)" identifier (argument_list "(0x800)" ( number_literal ))))) ;) (expression_statement "sVar16 = _UNK_00128298;" (assignment_expression "sVar16 = _UNK_00128298" identifier = identifier) ;) (expression_statement "sVar34 = _DAT_00128290;" (assignment_expression "sVar34 = _DAT_00128290" identifier = identifier) ;) (expression_statement "ppsVar28[s] = local_e0;" (assignment_expression "ppsVar28[s] = local_e0" (subscript_expression "ppsVar28[s]" identifier [ identifier ]) = identifier) ;) (expression_statement "psVar20 = local_e0;" (assignment_expression "psVar20 = local_e0" identifier = identifier) ;) (do_statement "do {\n      *psVar20 = sVar34;\n      psVar20[1] = sVar16;\n      psVar20 = psVar20 + 2;\n    } while (local_e0 + 0x100 != psVar20);" do (compound_statement "{\n      *psVar20 = sVar34;\n      psVar20[1] = sVar16;\n      psVar20 = psVar20 + 2;\n    }" { (expression_statement "*psVar20 = sVar34;" (assignment_expression "*psVar20 = sVar34" (pointer_expression "*psVar20" * identifier) = identifier) ;) (expression_statement "psVar20[1] = sVar16;" (assignment_expression "psVar20[1] = sVar16" (subscript_expression "psVar20[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "psVar20 = psVar20 + 2;" (assignment_expression "psVar20 = psVar20 + 2" identifier = (binary_expression "psVar20 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_e0 + 0x100 != psVar20)" ( (binary_expression "local_e0 + 0x100 != psVar20" (binary_expression "local_e0 + 0x100" identifier + number_literal) != identifier) )) ;) })) (expression_statement "d->success[s] = '\0';" (assignment_expression "d->success[s] = '\0'" (subscript_expression "d->success[s]" (field_expression "d->success" identifier -> field_identifier) [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "bVar22 = d->states[s].context;" (assignment_expression "bVar22 = d->states[s].context" identifier = (field_expression "d->states[s].context" (subscript_expression "d->states[s]" (field_expression "d->states" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "uVar4 = d->states[s].constraint;" (assignment_expression "uVar4 = d->states[s].constraint" identifier = (field_expression "d->states[s].constraint" (subscript_expression "d->states[s]" (field_expression "d->states" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "uVar27 = (uint)uVar4;" (assignment_expression "uVar27 = (uint)uVar4" identifier = (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (((int)uVar27 >> 6 & (uint)bVar22 & 7) != 0) {\n    d->success[s] = d->success[s] | 4;\n    bVar22 = d->states[s].context;\n    uVar4 = d->states[s].constraint;\n    uVar27 = (uint)uVar4;\n  }" if (parenthesized_expression "(((int)uVar27 >> 6 & (uint)bVar22 & 7) != 0)" ( (binary_expression "((int)uVar27 >> 6 & (uint)bVar22 & 7) != 0" (parenthesized_expression "((int)uVar27 >> 6 & (uint)bVar22 & 7)" ( (binary_expression "(int)uVar27 >> 6 & (uint)bVar22 & 7" (binary_expression "(int)uVar27 >> 6 & (uint)bVar22" (binary_expression "(int)uVar27 >> 6" (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & (cast_expression "(uint)bVar22" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) )) != number_literal) )) (compound_statement "{\n    d->success[s] = d->success[s] | 4;\n    bVar22 = d->states[s].context;\n    uVar4 = d->states[s].constraint;\n    uVar27 = (uint)uVar4;\n  }" { (expression_statement "d->success[s] = d->success[s] | 4;" (assignment_expression "d->success[s] = d->success[s] | 4" (subscript_expression "d->success[s]" (field_expression "d->success" identifier -> field_identifier) [ identifier ]) = (binary_expression "d->success[s] | 4" (subscript_expression "d->success[s]" (field_expression "d->success" identifier -> field_identifier) [ identifier ]) | number_literal)) ;) (expression_statement "bVar22 = d->states[s].context;" (assignment_expression "bVar22 = d->states[s].context" identifier = (field_expression "d->states[s].context" (subscript_expression "d->states[s]" (field_expression "d->states" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "uVar4 = d->states[s].constraint;" (assignment_expression "uVar4 = d->states[s].constraint" identifier = (field_expression "d->states[s].constraint" (subscript_expression "d->states[s]" (field_expression "d->states" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "uVar27 = (uint)uVar4;" (assignment_expression "uVar27 = (uint)uVar4" identifier = (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "uVar23 = (uint)bVar22;" (assignment_expression "uVar23 = (uint)bVar22" identifier = (cast_expression "(uint)bVar22" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (((int)(uint)uVar4 >> 3 & uVar23 & 7) != 0) {\n    d->success[s] = d->success[s] | 2;\n    uVar23 = (uint)d->states[s].context;\n    uVar27 = (uint)d->states[s].constraint;\n  }" if (parenthesized_expression "(((int)(uint)uVar4 >> 3 & uVar23 & 7) != 0)" ( (binary_expression "((int)(uint)uVar4 >> 3 & uVar23 & 7) != 0" (parenthesized_expression "((int)(uint)uVar4 >> 3 & uVar23 & 7)" ( (binary_expression "(int)(uint)uVar4 >> 3 & uVar23 & 7" (binary_expression "(int)(uint)uVar4 >> 3 & uVar23" (binary_expression "(int)(uint)uVar4 >> 3" (cast_expression "(int)(uint)uVar4" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) >> number_literal) & identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    d->success[s] = d->success[s] | 2;\n    uVar23 = (uint)d->states[s].context;\n    uVar27 = (uint)d->states[s].constraint;\n  }" { (expression_statement "d->success[s] = d->success[s] | 2;" (assignment_expression "d->success[s] = d->success[s] | 2" (subscript_expression "d->success[s]" (field_expression "d->success" identifier -> field_identifier) [ identifier ]) = (binary_expression "d->success[s] | 2" (subscript_expression "d->success[s]" (field_expression "d->success" identifier -> field_identifier) [ identifier ]) | number_literal)) ;) (expression_statement "uVar23 = (uint)d->states[s].context;" (assignment_expression "uVar23 = (uint)d->states[s].context" identifier = (cast_expression "(uint)d->states[s].context" ( (type_descriptor "uint" type_identifier) ) (field_expression "d->states[s].context" (subscript_expression "d->states[s]" (field_expression "d->states" identifier -> field_identifier) [ identifier ]) . field_identifier))) ;) (expression_statement "uVar27 = (uint)d->states[s].constraint;" (assignment_expression "uVar27 = (uint)d->states[s].constraint" identifier = (cast_expression "(uint)d->states[s].constraint" ( (type_descriptor "uint" type_identifier) ) (field_expression "d->states[s].constraint" (subscript_expression "d->states[s]" (field_expression "d->states" identifier -> field_identifier) [ identifier ]) . field_identifier))) ;) })) (if_statement "if ((uVar27 & 7 & uVar23) != 0) {\n    d->success[s] = d->success[s] | 1;\n  }" if (parenthesized_expression "((uVar27 & 7 & uVar23) != 0)" ( (binary_expression "(uVar27 & 7 & uVar23) != 0" (parenthesized_expression "(uVar27 & 7 & uVar23)" ( (binary_expression "uVar27 & 7 & uVar23" (binary_expression "uVar27 & 7" identifier & number_literal) & identifier) )) != number_literal) )) (compound_statement "{\n    d->success[s] = d->success[s] | 1;\n  }" { (expression_statement "d->success[s] = d->success[s] | 1;" (assignment_expression "d->success[s] = d->success[s] | 1" (subscript_expression "d->success[s]" (field_expression "d->success" identifier -> field_identifier) [ identifier ]) = (binary_expression "d->success[s] | 1" (subscript_expression "d->success[s]" (field_expression "d->success" identifier -> field_identifier) [ identifier ]) | number_literal)) ;) })) (expression_statement "uVar14 = d->nleaves;" (assignment_expression "uVar14 = d->nleaves" identifier = (field_expression "d->nleaves" identifier -> field_identifier)) ;) (if_statement "if (((long)(uVar14 << 4) < 0) || (uVar14 >> 0x3c != 0)) {\nLAB_00114c1c:\n                    /* WARNING: Subroutine does not return */\n    xalloc_die();\n  }" if (parenthesized_expression "(((long)(uVar14 << 4) < 0) || (uVar14 >> 0x3c != 0))" ( (binary_expression "((long)(uVar14 << 4) < 0) || (uVar14 >> 0x3c != 0)" (parenthesized_expression "((long)(uVar14 << 4) < 0)" ( (binary_expression "(long)(uVar14 << 4) < 0" (cast_expression "(long)(uVar14 << 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar14 << 4)" ( (binary_expression "uVar14 << 4" identifier << number_literal) ))) < number_literal) )) || (parenthesized_expression "(uVar14 >> 0x3c != 0)" ( (binary_expression "uVar14 >> 0x3c != 0" (binary_expression "uVar14 >> 0x3c" identifier >> number_literal) != number_literal) ))) )) (compound_statement "{\nLAB_00114c1c:\n                    /* WARNING: Subroutine does not return */\n    xalloc_die();\n  }" { (labeled_statement "LAB_00114c1c:\n                    /* WARNING: Subroutine does not return */\n    xalloc_die();" statement_identifier : comment (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "p_00 = (position *)xmalloc(uVar14 << 4);" (assignment_expression "p_00 = (position *)xmalloc(uVar14 << 4)" identifier = (cast_expression "(position *)xmalloc(uVar14 << 4)" ( (type_descriptor "position *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(uVar14 << 4)" identifier (argument_list "(uVar14 << 4)" ( (binary_expression "uVar14 << 4" identifier << number_literal) ))))) ;) (expression_statement "local_f8 = d->states + s;" (assignment_expression "local_f8 = d->states + s" identifier = (binary_expression "d->states + s" (field_expression "d->states" identifier -> field_identifier) + identifier)) ;) (expression_statement "uVar36 = (local_f8->elems).nelem;" (assignment_expression "uVar36 = (local_f8->elems).nelem" identifier = (field_expression "(local_f8->elems).nelem" (parenthesized_expression "(local_f8->elems)" ( (field_expression "local_f8->elems" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (uVar36 == 0) {\n    lVar33 = 0;\n  }\n  else {\n    local_100 = 0;\n    ppVar15 = (local_f8->elems).elems;\n    lVar33 = 0;\n    ppVar37 = d->follows;\n    do {\n      uVar38 = 0;\n      ppVar29 = ppVar37 + ppVar15[local_100].index;\n      if (ppVar29->nelem != 0) {\n        do {\n          uVar36 = ppVar29->elems[uVar38].index;\n          uVar27 = ppVar29->elems[uVar38].constraint;\n          ppVar13 = p_00;\n          if (lVar33 == 0) {\n            if ((long)uVar14 < 1) {\n              lVar40 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar40 = 0;\n            lVar30 = lVar33;\n            do {\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            } while (lVar40 < lVar30);\nLAB_0011401d:\n            uVar12 = uVar14;\n            if ((long)uVar14 <= lVar33) {\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }\n            p_00 = ppVar13 + lVar40;\n            uVar14 = uVar12;\n            if (lVar40 < lVar33) {\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }\n          }\n          p_00->index = uVar36;\n          lVar33 = lVar33 + 1;\n          p_00->constraint = uVar27;\n          p_00 = ppVar13;\nLAB_00114119:\n          uVar38 = uVar38 + 1;\n          ppVar29 = ppVar37 + ppVar15[local_100].index;\n        } while (uVar38 < (ulong)ppVar29->nelem);\n        uVar36 = (local_f8->elems).nelem;\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar36);\n  }" if (parenthesized_expression "(uVar36 == 0)" ( (binary_expression "uVar36 == 0" identifier == number_literal) )) (compound_statement "{\n    lVar33 = 0;\n  }" { (expression_statement "lVar33 = 0;" (assignment_expression "lVar33 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    local_100 = 0;\n    ppVar15 = (local_f8->elems).elems;\n    lVar33 = 0;\n    ppVar37 = d->follows;\n    do {\n      uVar38 = 0;\n      ppVar29 = ppVar37 + ppVar15[local_100].index;\n      if (ppVar29->nelem != 0) {\n        do {\n          uVar36 = ppVar29->elems[uVar38].index;\n          uVar27 = ppVar29->elems[uVar38].constraint;\n          ppVar13 = p_00;\n          if (lVar33 == 0) {\n            if ((long)uVar14 < 1) {\n              lVar40 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar40 = 0;\n            lVar30 = lVar33;\n            do {\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            } while (lVar40 < lVar30);\nLAB_0011401d:\n            uVar12 = uVar14;\n            if ((long)uVar14 <= lVar33) {\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }\n            p_00 = ppVar13 + lVar40;\n            uVar14 = uVar12;\n            if (lVar40 < lVar33) {\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }\n          }\n          p_00->index = uVar36;\n          lVar33 = lVar33 + 1;\n          p_00->constraint = uVar27;\n          p_00 = ppVar13;\nLAB_00114119:\n          uVar38 = uVar38 + 1;\n          ppVar29 = ppVar37 + ppVar15[local_100].index;\n        } while (uVar38 < (ulong)ppVar29->nelem);\n        uVar36 = (local_f8->elems).nelem;\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar36);\n  }" else (compound_statement "{\n    local_100 = 0;\n    ppVar15 = (local_f8->elems).elems;\n    lVar33 = 0;\n    ppVar37 = d->follows;\n    do {\n      uVar38 = 0;\n      ppVar29 = ppVar37 + ppVar15[local_100].index;\n      if (ppVar29->nelem != 0) {\n        do {\n          uVar36 = ppVar29->elems[uVar38].index;\n          uVar27 = ppVar29->elems[uVar38].constraint;\n          ppVar13 = p_00;\n          if (lVar33 == 0) {\n            if ((long)uVar14 < 1) {\n              lVar40 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar40 = 0;\n            lVar30 = lVar33;\n            do {\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            } while (lVar40 < lVar30);\nLAB_0011401d:\n            uVar12 = uVar14;\n            if ((long)uVar14 <= lVar33) {\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }\n            p_00 = ppVar13 + lVar40;\n            uVar14 = uVar12;\n            if (lVar40 < lVar33) {\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }\n          }\n          p_00->index = uVar36;\n          lVar33 = lVar33 + 1;\n          p_00->constraint = uVar27;\n          p_00 = ppVar13;\nLAB_00114119:\n          uVar38 = uVar38 + 1;\n          ppVar29 = ppVar37 + ppVar15[local_100].index;\n        } while (uVar38 < (ulong)ppVar29->nelem);\n        uVar36 = (local_f8->elems).nelem;\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar36);\n  }" { (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (expression_statement "ppVar15 = (local_f8->elems).elems;" (assignment_expression "ppVar15 = (local_f8->elems).elems" identifier = (field_expression "(local_f8->elems).elems" (parenthesized_expression "(local_f8->elems)" ( (field_expression "local_f8->elems" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "lVar33 = 0;" (assignment_expression "lVar33 = 0" identifier = number_literal) ;) (expression_statement "ppVar37 = d->follows;" (assignment_expression "ppVar37 = d->follows" identifier = (field_expression "d->follows" identifier -> field_identifier)) ;) (do_statement "do {\n      uVar38 = 0;\n      ppVar29 = ppVar37 + ppVar15[local_100].index;\n      if (ppVar29->nelem != 0) {\n        do {\n          uVar36 = ppVar29->elems[uVar38].index;\n          uVar27 = ppVar29->elems[uVar38].constraint;\n          ppVar13 = p_00;\n          if (lVar33 == 0) {\n            if ((long)uVar14 < 1) {\n              lVar40 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar40 = 0;\n            lVar30 = lVar33;\n            do {\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            } while (lVar40 < lVar30);\nLAB_0011401d:\n            uVar12 = uVar14;\n            if ((long)uVar14 <= lVar33) {\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }\n            p_00 = ppVar13 + lVar40;\n            uVar14 = uVar12;\n            if (lVar40 < lVar33) {\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }\n          }\n          p_00->index = uVar36;\n          lVar33 = lVar33 + 1;\n          p_00->constraint = uVar27;\n          p_00 = ppVar13;\nLAB_00114119:\n          uVar38 = uVar38 + 1;\n          ppVar29 = ppVar37 + ppVar15[local_100].index;\n        } while (uVar38 < (ulong)ppVar29->nelem);\n        uVar36 = (local_f8->elems).nelem;\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar36);" do (compound_statement "{\n      uVar38 = 0;\n      ppVar29 = ppVar37 + ppVar15[local_100].index;\n      if (ppVar29->nelem != 0) {\n        do {\n          uVar36 = ppVar29->elems[uVar38].index;\n          uVar27 = ppVar29->elems[uVar38].constraint;\n          ppVar13 = p_00;\n          if (lVar33 == 0) {\n            if ((long)uVar14 < 1) {\n              lVar40 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar40 = 0;\n            lVar30 = lVar33;\n            do {\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            } while (lVar40 < lVar30);\nLAB_0011401d:\n            uVar12 = uVar14;\n            if ((long)uVar14 <= lVar33) {\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }\n            p_00 = ppVar13 + lVar40;\n            uVar14 = uVar12;\n            if (lVar40 < lVar33) {\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }\n          }\n          p_00->index = uVar36;\n          lVar33 = lVar33 + 1;\n          p_00->constraint = uVar27;\n          p_00 = ppVar13;\nLAB_00114119:\n          uVar38 = uVar38 + 1;\n          ppVar29 = ppVar37 + ppVar15[local_100].index;\n        } while (uVar38 < (ulong)ppVar29->nelem);\n        uVar36 = (local_f8->elems).nelem;\n      }\n      local_100 = local_100 + 1;\n    }" { (expression_statement "uVar38 = 0;" (assignment_expression "uVar38 = 0" identifier = number_literal) ;) (expression_statement "ppVar29 = ppVar37 + ppVar15[local_100].index;" (assignment_expression "ppVar29 = ppVar37 + ppVar15[local_100].index" identifier = (binary_expression "ppVar37 + ppVar15[local_100].index" identifier + (field_expression "ppVar15[local_100].index" (subscript_expression "ppVar15[local_100]" identifier [ identifier ]) . field_identifier))) ;) (if_statement "if (ppVar29->nelem != 0) {\n        do {\n          uVar36 = ppVar29->elems[uVar38].index;\n          uVar27 = ppVar29->elems[uVar38].constraint;\n          ppVar13 = p_00;\n          if (lVar33 == 0) {\n            if ((long)uVar14 < 1) {\n              lVar40 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar40 = 0;\n            lVar30 = lVar33;\n            do {\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            } while (lVar40 < lVar30);\nLAB_0011401d:\n            uVar12 = uVar14;\n            if ((long)uVar14 <= lVar33) {\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }\n            p_00 = ppVar13 + lVar40;\n            uVar14 = uVar12;\n            if (lVar40 < lVar33) {\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }\n          }\n          p_00->index = uVar36;\n          lVar33 = lVar33 + 1;\n          p_00->constraint = uVar27;\n          p_00 = ppVar13;\nLAB_00114119:\n          uVar38 = uVar38 + 1;\n          ppVar29 = ppVar37 + ppVar15[local_100].index;\n        } while (uVar38 < (ulong)ppVar29->nelem);\n        uVar36 = (local_f8->elems).nelem;\n      }" if (parenthesized_expression "(ppVar29->nelem != 0)" ( (binary_expression "ppVar29->nelem != 0" (field_expression "ppVar29->nelem" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n        do {\n          uVar36 = ppVar29->elems[uVar38].index;\n          uVar27 = ppVar29->elems[uVar38].constraint;\n          ppVar13 = p_00;\n          if (lVar33 == 0) {\n            if ((long)uVar14 < 1) {\n              lVar40 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar40 = 0;\n            lVar30 = lVar33;\n            do {\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            } while (lVar40 < lVar30);\nLAB_0011401d:\n            uVar12 = uVar14;\n            if ((long)uVar14 <= lVar33) {\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }\n            p_00 = ppVar13 + lVar40;\n            uVar14 = uVar12;\n            if (lVar40 < lVar33) {\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }\n          }\n          p_00->index = uVar36;\n          lVar33 = lVar33 + 1;\n          p_00->constraint = uVar27;\n          p_00 = ppVar13;\nLAB_00114119:\n          uVar38 = uVar38 + 1;\n          ppVar29 = ppVar37 + ppVar15[local_100].index;\n        } while (uVar38 < (ulong)ppVar29->nelem);\n        uVar36 = (local_f8->elems).nelem;\n      }" { (do_statement "do {\n          uVar36 = ppVar29->elems[uVar38].index;\n          uVar27 = ppVar29->elems[uVar38].constraint;\n          ppVar13 = p_00;\n          if (lVar33 == 0) {\n            if ((long)uVar14 < 1) {\n              lVar40 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar40 = 0;\n            lVar30 = lVar33;\n            do {\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            } while (lVar40 < lVar30);\nLAB_0011401d:\n            uVar12 = uVar14;\n            if ((long)uVar14 <= lVar33) {\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }\n            p_00 = ppVar13 + lVar40;\n            uVar14 = uVar12;\n            if (lVar40 < lVar33) {\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }\n          }\n          p_00->index = uVar36;\n          lVar33 = lVar33 + 1;\n          p_00->constraint = uVar27;\n          p_00 = ppVar13;\nLAB_00114119:\n          uVar38 = uVar38 + 1;\n          ppVar29 = ppVar37 + ppVar15[local_100].index;\n        } while (uVar38 < (ulong)ppVar29->nelem);" do (compound_statement "{\n          uVar36 = ppVar29->elems[uVar38].index;\n          uVar27 = ppVar29->elems[uVar38].constraint;\n          ppVar13 = p_00;\n          if (lVar33 == 0) {\n            if ((long)uVar14 < 1) {\n              lVar40 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar40 = 0;\n            lVar30 = lVar33;\n            do {\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            } while (lVar40 < lVar30);\nLAB_0011401d:\n            uVar12 = uVar14;\n            if ((long)uVar14 <= lVar33) {\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }\n            p_00 = ppVar13 + lVar40;\n            uVar14 = uVar12;\n            if (lVar40 < lVar33) {\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }\n          }\n          p_00->index = uVar36;\n          lVar33 = lVar33 + 1;\n          p_00->constraint = uVar27;\n          p_00 = ppVar13;\nLAB_00114119:\n          uVar38 = uVar38 + 1;\n          ppVar29 = ppVar37 + ppVar15[local_100].index;\n        }" { (expression_statement "uVar36 = ppVar29->elems[uVar38].index;" (assignment_expression "uVar36 = ppVar29->elems[uVar38].index" identifier = (field_expression "ppVar29->elems[uVar38].index" (subscript_expression "ppVar29->elems[uVar38]" (field_expression "ppVar29->elems" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "uVar27 = ppVar29->elems[uVar38].constraint;" (assignment_expression "uVar27 = ppVar29->elems[uVar38].constraint" identifier = (field_expression "ppVar29->elems[uVar38].constraint" (subscript_expression "ppVar29->elems[uVar38]" (field_expression "ppVar29->elems" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "ppVar13 = p_00;" (assignment_expression "ppVar13 = p_00" identifier = identifier) ;) (if_statement "if (lVar33 == 0) {\n            if ((long)uVar14 < 1) {\n              lVar40 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar40 = 0;\n            lVar30 = lVar33;\n            do {\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            } while (lVar40 < lVar30);\nLAB_0011401d:\n            uVar12 = uVar14;\n            if ((long)uVar14 <= lVar33) {\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }\n            p_00 = ppVar13 + lVar40;\n            uVar14 = uVar12;\n            if (lVar40 < lVar33) {\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }\n          }" if (parenthesized_expression "(lVar33 == 0)" ( (binary_expression "lVar33 == 0" identifier == number_literal) )) (compound_statement "{\n            if ((long)uVar14 < 1) {\n              lVar40 = 0;\n              goto LAB_00114026;\n            }\n          }" { (if_statement "if ((long)uVar14 < 1) {\n              lVar40 = 0;\n              goto LAB_00114026;\n            }" if (parenthesized_expression "((long)uVar14 < 1)" ( (binary_expression "(long)uVar14 < 1" (cast_expression "(long)uVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n              lVar40 = 0;\n              goto LAB_00114026;\n            }" { (expression_statement "lVar40 = 0;" (assignment_expression "lVar40 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00114026;" goto statement_identifier ;) })) }) (else_clause "else {\n            lVar40 = 0;\n            lVar30 = lVar33;\n            do {\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            } while (lVar40 < lVar30);\nLAB_0011401d:\n            uVar12 = uVar14;\n            if ((long)uVar14 <= lVar33) {\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }\n            p_00 = ppVar13 + lVar40;\n            uVar14 = uVar12;\n            if (lVar40 < lVar33) {\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }\n          }" else (compound_statement "{\n            lVar40 = 0;\n            lVar30 = lVar33;\n            do {\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            } while (lVar40 < lVar30);\nLAB_0011401d:\n            uVar12 = uVar14;\n            if ((long)uVar14 <= lVar33) {\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }\n            p_00 = ppVar13 + lVar40;\n            uVar14 = uVar12;\n            if (lVar40 < lVar33) {\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }\n          }" { (expression_statement "lVar40 = 0;" (assignment_expression "lVar40 = 0" identifier = number_literal) ;) (expression_statement "lVar30 = lVar33;" (assignment_expression "lVar30 = lVar33" identifier = identifier) ;) (do_statement "do {\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            } while (lVar40 < lVar30);" do (compound_statement "{\n              while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }\n              lVar40 = lVar11 + 1;\n            }" { (while_statement "while( true ) {\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                lVar11 = lVar30 + lVar40 >> 1;\n                uVar12 = p_00[lVar11].index;\n                if (uVar12 <= uVar36 && uVar36 != uVar12) break;\n                if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }\n                lVar30 = lVar11;\n                if (lVar11 <= lVar40) goto LAB_0011401d;\n              }" { (expression_statement "lVar11 = lVar30 + lVar40 >> 1;" (assignment_expression "lVar11 = lVar30 + lVar40 >> 1" identifier = (binary_expression "lVar30 + lVar40 >> 1" (binary_expression "lVar30 + lVar40" identifier + identifier) >> number_literal)) ;) (expression_statement "uVar12 = p_00[lVar11].index;" (assignment_expression "uVar12 = p_00[lVar11].index" identifier = (field_expression "p_00[lVar11].index" (subscript_expression "p_00[lVar11]" identifier [ identifier ]) . field_identifier)) ;) (if_statement "if (uVar12 <= uVar36 && uVar36 != uVar12) break;" if (parenthesized_expression "(uVar12 <= uVar36 && uVar36 != uVar12)" ( (binary_expression "uVar12 <= uVar36 && uVar36 != uVar12" (binary_expression "uVar12 <= uVar36" identifier <= identifier) && (binary_expression "uVar36 != uVar12" identifier != identifier)) )) (break_statement "break;" break ;)) (if_statement "if (uVar36 == uVar12) {\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }" if (parenthesized_expression "(uVar36 == uVar12)" ( (binary_expression "uVar36 == uVar12" identifier == identifier) )) (compound_statement "{\n                  puVar1 = &p_00[lVar11].constraint;\n                  *puVar1 = *puVar1 | uVar27;\n                  goto LAB_00114119;\n                }" { (expression_statement "puVar1 = &p_00[lVar11].constraint;" (assignment_expression "puVar1 = &p_00[lVar11].constraint" identifier = (pointer_expression "&p_00[lVar11].constraint" & (field_expression "p_00[lVar11].constraint" (subscript_expression "p_00[lVar11]" identifier [ identifier ]) . field_identifier))) ;) (expression_statement "*puVar1 = *puVar1 | uVar27;" (assignment_expression "*puVar1 = *puVar1 | uVar27" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | uVar27" (pointer_expression "*puVar1" * identifier) | identifier)) ;) (goto_statement "goto LAB_00114119;" goto statement_identifier ;) })) (expression_statement "lVar30 = lVar11;" (assignment_expression "lVar30 = lVar11" identifier = identifier) ;) (if_statement "if (lVar11 <= lVar40) goto LAB_0011401d;" if (parenthesized_expression "(lVar11 <= lVar40)" ( (binary_expression "lVar11 <= lVar40" identifier <= identifier) )) (goto_statement "goto LAB_0011401d;" goto statement_identifier ;)) })) (expression_statement "lVar40 = lVar11 + 1;" (assignment_expression "lVar40 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar40 < lVar30)" ( (binary_expression "lVar40 < lVar30" identifier < identifier) )) ;) (labeled_statement "LAB_0011401d:\n            uVar12 = uVar14;" statement_identifier : (expression_statement "uVar12 = uVar14;" (assignment_expression "uVar12 = uVar14" identifier = identifier) ;)) (if_statement "if ((long)uVar14 <= lVar33) {\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }" if (parenthesized_expression "((long)uVar14 <= lVar33)" ( (binary_expression "(long)uVar14 <= lVar33" (cast_expression "(long)uVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) <= identifier) )) (compound_statement "{\nLAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;\n              if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }\n              if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;\n              ppVar13 = (position *)xrealloc(p_00,sVar26);\n              ppVar37 = d->follows;\n              local_f8 = d->states + s;\n              ppVar15 = (local_f8->elems).elems;\n            }" { (labeled_statement "LAB_00114026:\n              uVar12 = ((long)uVar14 >> 1) + uVar14;" statement_identifier : (expression_statement "uVar12 = ((long)uVar14 >> 1) + uVar14;" (assignment_expression "uVar12 = ((long)uVar14 >> 1) + uVar14" identifier = (binary_expression "((long)uVar14 >> 1) + uVar14" (parenthesized_expression "((long)uVar14 >> 1)" ( (binary_expression "(long)uVar14 >> 1" (cast_expression "(long)uVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )) + identifier)) ;)) (if_statement "if ((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }" if (parenthesized_expression "((SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))" ( (binary_expression "(SCARRY8((long)uVar14 >> 1,uVar14)) ||\n                 (sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" (parenthesized_expression "(SCARRY8((long)uVar14 >> 1,uVar14))" ( (call_expression "SCARRY8((long)uVar14 >> 1,uVar14)" identifier (argument_list "((long)uVar14 >> 1,uVar14)" ( (binary_expression "(long)uVar14 >> 1" (cast_expression "(long)uVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) , identifier ))) )) || (parenthesized_expression "(sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" ( (comma_expression "sVar26 = uVar12 * 0x10,\n                 SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)" (assignment_expression "sVar26 = uVar12 * 0x10" identifier = (binary_expression "uVar12 * 0x10" identifier * number_literal)) , (binary_expression "SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816((long)sVar26)" identifier (argument_list "((long)sVar26)" ( (cast_expression "(long)sVar26" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) != (binary_expression "SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816((long)uVar12)" identifier (argument_list "((long)uVar12)" ( (cast_expression "(long)uVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) * (call_expression "SEXT816(0x10)" identifier (argument_list "(0x10)" ( number_literal )))))) ))) )) (compound_statement "{\n                sVar26 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }" { (expression_statement "sVar26 = 0x7ffffffffffffff0;" (assignment_expression "sVar26 = 0x7ffffffffffffff0" identifier = number_literal) ;) (expression_statement "uVar12 = 0x7ffffffffffffff;" (assignment_expression "uVar12 = 0x7ffffffffffffff" identifier = number_literal) ;) }) (else_clause "else if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }" else (if_statement "if ((long)sVar26 < 0x80) {\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }" if (parenthesized_expression "((long)sVar26 < 0x80)" ( (binary_expression "(long)sVar26 < 0x80" (cast_expression "(long)sVar26" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n                uVar12 = 8;\n                sVar26 = 0x80;\n              }" { (expression_statement "uVar12 = 8;" (assignment_expression "uVar12 = 8" identifier = number_literal) ;) (expression_statement "sVar26 = 0x80;" (assignment_expression "sVar26 = 0x80" identifier = number_literal) ;) })))) (if_statement "if ((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n              goto LAB_00114c1c;" if (parenthesized_expression "((uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))" ( (binary_expression "(uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0) &&\n                 ((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))))" (parenthesized_expression "(uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0)" ( (binary_expression "uVar12 == uVar14 || (long)(uVar12 - uVar14) < 0" (binary_expression "uVar12 == uVar14" identifier == identifier) || (binary_expression "(long)(uVar12 - uVar14) < 0" (cast_expression "(long)(uVar12 - uVar14)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar12 - uVar14)" ( (binary_expression "uVar12 - uVar14" identifier - identifier) ))) < number_literal)) )) && (parenthesized_expression "((uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))))" ( (parenthesized_expression "(uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))" ( (comma_expression "uVar12 = uVar14 + 1, SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" (assignment_expression "uVar12 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) , (binary_expression "SCARRY8(uVar14,1) ||\n                  (sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" (call_expression "SCARRY8(uVar14,1)" identifier (argument_list "(uVar14,1)" ( identifier , number_literal ))) || (parenthesized_expression "(sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" ( (comma_expression "sVar26 = uVar12 * 0x10,\n                  SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)" (assignment_expression "sVar26 = uVar12 * 0x10" identifier = (binary_expression "uVar12 * 0x10" identifier * number_literal)) , (binary_expression "SEXT816((long)sVar26) != SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816((long)sVar26)" identifier (argument_list "((long)sVar26)" ( (cast_expression "(long)sVar26" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) != (binary_expression "SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816((long)uVar12)" identifier (argument_list "((long)uVar12)" ( (cast_expression "(long)uVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) * (call_expression "SEXT816(0x10)" identifier (argument_list "(0x10)" ( number_literal )))))) )))) )) ))) )) (goto_statement "goto LAB_00114c1c;" goto statement_identifier ;)) (expression_statement "ppVar13 = (position *)xrealloc(p_00,sVar26);" (assignment_expression "ppVar13 = (position *)xrealloc(p_00,sVar26)" identifier = (cast_expression "(position *)xrealloc(p_00,sVar26)" ( (type_descriptor "position *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(p_00,sVar26)" identifier (argument_list "(p_00,sVar26)" ( identifier , identifier ))))) ;) (expression_statement "ppVar37 = d->follows;" (assignment_expression "ppVar37 = d->follows" identifier = (field_expression "d->follows" identifier -> field_identifier)) ;) (expression_statement "local_f8 = d->states + s;" (assignment_expression "local_f8 = d->states + s" identifier = (binary_expression "d->states + s" (field_expression "d->states" identifier -> field_identifier) + identifier)) ;) (expression_statement "ppVar15 = (local_f8->elems).elems;" (assignment_expression "ppVar15 = (local_f8->elems).elems" identifier = (field_expression "(local_f8->elems).elems" (parenthesized_expression "(local_f8->elems)" ( (field_expression "local_f8->elems" identifier -> field_identifier) )) . field_identifier)) ;) })) (expression_statement "p_00 = ppVar13 + lVar40;" (assignment_expression "p_00 = ppVar13 + lVar40" identifier = (binary_expression "ppVar13 + lVar40" identifier + identifier)) ;) (expression_statement "uVar14 = uVar12;" (assignment_expression "uVar14 = uVar12" identifier = identifier) ;) (if_statement "if (lVar40 < lVar33) {\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }" if (parenthesized_expression "(lVar40 < lVar33)" ( (binary_expression "lVar40 < lVar33" identifier < identifier) )) (compound_statement "{\n              memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);\n            }" { (expression_statement "memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10);" (call_expression "memmove(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10)" identifier (argument_list "(ppVar13 + lVar40 + 1,p_00,(lVar33 - lVar40) * 0x10)" ( (binary_expression "ppVar13 + lVar40 + 1" (binary_expression "ppVar13 + lVar40" identifier + identifier) + number_literal) , identifier , (binary_expression "(lVar33 - lVar40) * 0x10" (parenthesized_expression "(lVar33 - lVar40)" ( (binary_expression "lVar33 - lVar40" identifier - identifier) )) * number_literal) ))) ;) })) }))) (expression_statement "p_00->index = uVar36;" (assignment_expression "p_00->index = uVar36" (field_expression "p_00->index" identifier -> field_identifier) = identifier) ;) (expression_statement "lVar33 = lVar33 + 1;" (assignment_expression "lVar33 = lVar33 + 1" identifier = (binary_expression "lVar33 + 1" identifier + number_literal)) ;) (expression_statement "p_00->constraint = uVar27;" (assignment_expression "p_00->constraint = uVar27" (field_expression "p_00->constraint" identifier -> field_identifier) = identifier) ;) (expression_statement "p_00 = ppVar13;" (assignment_expression "p_00 = ppVar13" identifier = identifier) ;) (labeled_statement "LAB_00114119:\n          uVar38 = uVar38 + 1;" statement_identifier : (expression_statement "uVar38 = uVar38 + 1;" (assignment_expression "uVar38 = uVar38 + 1" identifier = (binary_expression "uVar38 + 1" identifier + number_literal)) ;)) (expression_statement "ppVar29 = ppVar37 + ppVar15[local_100].index;" (assignment_expression "ppVar29 = ppVar37 + ppVar15[local_100].index" identifier = (binary_expression "ppVar37 + ppVar15[local_100].index" identifier + (field_expression "ppVar15[local_100].index" (subscript_expression "ppVar15[local_100]" identifier [ identifier ]) . field_identifier))) ;) }) while (parenthesized_expression "(uVar38 < (ulong)ppVar29->nelem)" ( (binary_expression "uVar38 < (ulong)ppVar29->nelem" identifier < (cast_expression "(ulong)ppVar29->nelem" ( (type_descriptor "ulong" type_identifier) ) (field_expression "ppVar29->nelem" identifier -> field_identifier))) )) ;) (expression_statement "uVar36 = (local_f8->elems).nelem;" (assignment_expression "uVar36 = (local_f8->elems).nelem" identifier = (field_expression "(local_f8->elems).nelem" (parenthesized_expression "(local_f8->elems)" ( (field_expression "local_f8->elems" identifier -> field_identifier) )) . field_identifier)) ;) })) (expression_statement "local_100 = local_100 + 1;" (assignment_expression "local_100 = local_100 + 1" identifier = (binary_expression "local_100 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_100 < uVar36)" ( (binary_expression "local_100 < uVar36" identifier < identifier) )) ;) }))) (expression_statement "uVar14 = d->nleaves;" (assignment_expression "uVar14 = d->nleaves" identifier = (field_expression "d->nleaves" identifier -> field_identifier)) ;) (if_statement "if (((long)(uVar14 << 4) < 0) || (uVar14 >> 0x3c != 0)) goto LAB_00114c1c;" if (parenthesized_expression "(((long)(uVar14 << 4) < 0) || (uVar14 >> 0x3c != 0))" ( (binary_expression "((long)(uVar14 << 4) < 0) || (uVar14 >> 0x3c != 0)" (parenthesized_expression "((long)(uVar14 << 4) < 0)" ( (binary_expression "(long)(uVar14 << 4) < 0" (cast_expression "(long)(uVar14 << 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar14 << 4)" ( (binary_expression "uVar14 << 4" identifier << number_literal) ))) < number_literal) )) || (parenthesized_expression "(uVar14 >> 0x3c != 0)" ( (binary_expression "uVar14 >> 0x3c != 0" (binary_expression "uVar14 >> 0x3c" identifier >> number_literal) != number_literal) ))) )) (goto_statement "goto LAB_00114c1c;" goto statement_identifier ;)) (expression_statement "group.elems = (position *)xmalloc(uVar14 << 4);" (assignment_expression "group.elems = (position *)xmalloc(uVar14 << 4)" (field_expression "group.elems" identifier . field_identifier) = (cast_expression "(position *)xmalloc(uVar14 << 4)" ( (type_descriptor "position *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(uVar14 << 4)" identifier (argument_list "(uVar14 << 4)" ( (binary_expression "uVar14 << 4" identifier << number_literal) ))))) ;) (expression_statement "group.nelem = 0;" (assignment_expression "group.nelem = 0" (field_expression "group.nelem" identifier . field_identifier) = number_literal) ;) (expression_statement "label.w[0] = 0xffffffffffffffff;" (assignment_expression "label.w[0] = 0xffffffffffffffff" (subscript_expression "label.w[0]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "label.w[1] = 0xffffffffffffffff;" (assignment_expression "label.w[1] = 0xffffffffffffffff" (subscript_expression "label.w[1]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "label.w[2]._0_4_ = 0xffffffff;" (assignment_expression "label.w[2]._0_4_ = 0xffffffff" (field_expression "label.w[2]._0_4_" (subscript_expression "label.w[2]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "label.w[2]._4_4_ = 0xffffffff;" (assignment_expression "label.w[2]._4_4_ = 0xffffffff" (field_expression "label.w[2]._4_4_" (subscript_expression "label.w[2]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "label.w[3]._0_4_ = 0xffffffff;" (assignment_expression "label.w[3]._0_4_ = 0xffffffff" (field_expression "label.w[3]._0_4_" (subscript_expression "label.w[3]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "label.w[3]._4_4_ = 0xffffffff;" (assignment_expression "label.w[3]._4_4_ = 0xffffffff" (field_expression "label.w[3]._4_4_" (subscript_expression "label.w[3]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "group.alloc = uVar14;" (assignment_expression "group.alloc = uVar14" (field_expression "group.alloc" identifier . field_identifier) = identifier) ;) (if_statement "if (lVar33 != 0) {\n    lVar40 = 0;\n    uVar27 = (uint)(uc >> 6);\n    uVar14 = 1L << (uc & 0x3f);\n    ppVar15 = p_00;\n    do {\n      while( true ) {\n        sVar26 = ppVar15->index;\n        uVar6 = *(undefined8 *)&ppVar15->constraint;\n        p = *ppVar15;\n        uVar23 = ppVar15->constraint;\n        uVar36 = d->tokens[sVar26];\n        local_110 = (uint)uVar14;\n        uStack_10c = (uint)(uVar14 >> 0x20);\n        if (uVar36 < 0x100) break;\n        if ((long)uVar36 < 0x114) {\n          if (uVar36 != 0x10a) goto LAB_0011435a;\n          pdVar31 = d->states + s;\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[d->canychar].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[d->canychar].w + 2);\n          bVar22 = (byte)(matches.w[uVar27] >> (uc & 0x3f)) & 1;\n          if ((pdVar31->context & uVar23 & 7) != 0) {\n            if ((pdVar31->mbps).nelem == 0) {\n              ppVar13 = (position *)xmalloc(0x10);\n              pVar10 = _UNK_001282a8;\n              pVar9 = _DAT_001282a0;\n              (pdVar31->mbps).elems = ppVar13;\n              (pdVar31->mbps).nelem = pVar9;\n              (pdVar31->mbps).alloc = pVar10;\n              pdVar31 = d->states + s;\n            }\n            insert(p,&pdVar31->mbps);\n          }\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar22 != 0) goto LAB_00114267;\n        }\n        else {\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2);\n          if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar22 = 0;\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) {\nLAB_0011485e:\n            bVar3 = d->states[s].context;\n            cVar19 = matches.w[0];\n            cVar32 = matches.w[2];\n            cVar35 = matches.w[1];\n            uVar36 = matches.w[3];\n            if (((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0) {\n              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];\n              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];\n              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ~(d->syntax).letters.w[0];\n              cVar35 = cVar35 & ~(d->syntax).letters.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = cVar32 & ~(d->syntax).letters.w[2];\n              uVar36 = uVar36 & ~(d->syntax).letters.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if ((uVar23 & bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);\n              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);\n              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0) goto LAB_0011435a;\n            if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011445b;\n          }\n        }\n        local_118 = (uint)cVar32;\n        uStack_114 = (uint)(cVar32 >> 0x20);\n        lVar40 = lVar40 + 1;\n        ppVar15 = ppVar15 + 1;\n        label.w[2]._0_4_ = ~local_118 & (uint)label.w[2];\n        label.w[2]._4_4_ = ~uStack_114 & label.w[2]._4_4_;\n        label.w[3]._0_4_ = ~local_110 & (uint)label.w[3];\n        label.w[3]._4_4_ = ~uStack_10c & label.w[3]._4_4_;\n        label.w[0] = ~cVar19 & label.w[0];\n        label.w[1] = ~cVar35 & label.w[1];\n        if (lVar40 == lVar33) goto LAB_001144c5;\n      }\n      matches.w[0] = 0;\n      matches.w[1] = 0;\n      matches.w[2] = 0;\n      matches.w[3] = 0;\n      matches.w[uVar36 >> 6 & 0x3ffffff] = 1L << ((byte)uVar36 & 0x3f);\n      if (uVar36 != uc) goto LAB_0011482f;\nLAB_0011423a:\n      cVar19 = matches.w[0];\n      cVar32 = matches.w[2];\n      cVar35 = matches.w[1];\n      if (uVar23 != 0x1ff) {\n        bVar22 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      pVar9 = group.alloc;\n      local_118 = (uint)cVar32;\n      uStack_114 = (uint)(cVar32 >> 0x20);\n      label.w[2]._0_4_ = local_118 & (uint)label.w[2];\n      label.w[2]._4_4_ = uStack_114 & label.w[2]._4_4_;\n      label.w[3]._0_4_ = local_110 & (uint)label.w[3];\n      label.w[3]._4_4_ = uStack_10c & label.w[3]._4_4_;\n      label.w[0] = cVar19 & label.w[0];\n      label.w[1] = cVar35 & label.w[1];\n      if (group.alloc <= group.nelem) {\n        lVar30 = (group.alloc >> 1) + group.alloc;\n        if ((SCARRY8(group.alloc >> 1,group.alloc)) ||\n           (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))) {\n          lVar30 = 0x7ffffffffffffff;\n          n = 0x7ffffffffffffff0;\n        }\n        else if ((long)n < 0x80) {\n          n = 0x80;\n          lVar30 = 8;\n        }\n        if (group.elems == (position *)0x0) {\n          group.alloc = 0;\n        }\n        if ((lVar30 == pVar9 || lVar30 - pVar9 < 0) &&\n           ((lVar30 = pVar9 + 1, SCARRY8(pVar9,1) ||\n            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        group.elems = (position *)xrealloc(group.elems,n);\n        group.alloc = lVar30;\n      }\n      group.elems[group.nelem].index = sVar26;\n      group.elems[group.nelem].constraint = (uint)uVar6;\n      group.nelem = group.nelem + 1;\nLAB_0011435a:\n      lVar40 = lVar40 + 1;\n      ppVar15 = ppVar15 + 1;\n    } while (lVar40 != lVar33);\n  }" if (parenthesized_expression "(lVar33 != 0)" ( (binary_expression "lVar33 != 0" identifier != number_literal) )) (compound_statement "{\n    lVar40 = 0;\n    uVar27 = (uint)(uc >> 6);\n    uVar14 = 1L << (uc & 0x3f);\n    ppVar15 = p_00;\n    do {\n      while( true ) {\n        sVar26 = ppVar15->index;\n        uVar6 = *(undefined8 *)&ppVar15->constraint;\n        p = *ppVar15;\n        uVar23 = ppVar15->constraint;\n        uVar36 = d->tokens[sVar26];\n        local_110 = (uint)uVar14;\n        uStack_10c = (uint)(uVar14 >> 0x20);\n        if (uVar36 < 0x100) break;\n        if ((long)uVar36 < 0x114) {\n          if (uVar36 != 0x10a) goto LAB_0011435a;\n          pdVar31 = d->states + s;\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[d->canychar].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[d->canychar].w + 2);\n          bVar22 = (byte)(matches.w[uVar27] >> (uc & 0x3f)) & 1;\n          if ((pdVar31->context & uVar23 & 7) != 0) {\n            if ((pdVar31->mbps).nelem == 0) {\n              ppVar13 = (position *)xmalloc(0x10);\n              pVar10 = _UNK_001282a8;\n              pVar9 = _DAT_001282a0;\n              (pdVar31->mbps).elems = ppVar13;\n              (pdVar31->mbps).nelem = pVar9;\n              (pdVar31->mbps).alloc = pVar10;\n              pdVar31 = d->states + s;\n            }\n            insert(p,&pdVar31->mbps);\n          }\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar22 != 0) goto LAB_00114267;\n        }\n        else {\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2);\n          if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar22 = 0;\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) {\nLAB_0011485e:\n            bVar3 = d->states[s].context;\n            cVar19 = matches.w[0];\n            cVar32 = matches.w[2];\n            cVar35 = matches.w[1];\n            uVar36 = matches.w[3];\n            if (((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0) {\n              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];\n              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];\n              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ~(d->syntax).letters.w[0];\n              cVar35 = cVar35 & ~(d->syntax).letters.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = cVar32 & ~(d->syntax).letters.w[2];\n              uVar36 = uVar36 & ~(d->syntax).letters.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if ((uVar23 & bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);\n              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);\n              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0) goto LAB_0011435a;\n            if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011445b;\n          }\n        }\n        local_118 = (uint)cVar32;\n        uStack_114 = (uint)(cVar32 >> 0x20);\n        lVar40 = lVar40 + 1;\n        ppVar15 = ppVar15 + 1;\n        label.w[2]._0_4_ = ~local_118 & (uint)label.w[2];\n        label.w[2]._4_4_ = ~uStack_114 & label.w[2]._4_4_;\n        label.w[3]._0_4_ = ~local_110 & (uint)label.w[3];\n        label.w[3]._4_4_ = ~uStack_10c & label.w[3]._4_4_;\n        label.w[0] = ~cVar19 & label.w[0];\n        label.w[1] = ~cVar35 & label.w[1];\n        if (lVar40 == lVar33) goto LAB_001144c5;\n      }\n      matches.w[0] = 0;\n      matches.w[1] = 0;\n      matches.w[2] = 0;\n      matches.w[3] = 0;\n      matches.w[uVar36 >> 6 & 0x3ffffff] = 1L << ((byte)uVar36 & 0x3f);\n      if (uVar36 != uc) goto LAB_0011482f;\nLAB_0011423a:\n      cVar19 = matches.w[0];\n      cVar32 = matches.w[2];\n      cVar35 = matches.w[1];\n      if (uVar23 != 0x1ff) {\n        bVar22 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      pVar9 = group.alloc;\n      local_118 = (uint)cVar32;\n      uStack_114 = (uint)(cVar32 >> 0x20);\n      label.w[2]._0_4_ = local_118 & (uint)label.w[2];\n      label.w[2]._4_4_ = uStack_114 & label.w[2]._4_4_;\n      label.w[3]._0_4_ = local_110 & (uint)label.w[3];\n      label.w[3]._4_4_ = uStack_10c & label.w[3]._4_4_;\n      label.w[0] = cVar19 & label.w[0];\n      label.w[1] = cVar35 & label.w[1];\n      if (group.alloc <= group.nelem) {\n        lVar30 = (group.alloc >> 1) + group.alloc;\n        if ((SCARRY8(group.alloc >> 1,group.alloc)) ||\n           (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))) {\n          lVar30 = 0x7ffffffffffffff;\n          n = 0x7ffffffffffffff0;\n        }\n        else if ((long)n < 0x80) {\n          n = 0x80;\n          lVar30 = 8;\n        }\n        if (group.elems == (position *)0x0) {\n          group.alloc = 0;\n        }\n        if ((lVar30 == pVar9 || lVar30 - pVar9 < 0) &&\n           ((lVar30 = pVar9 + 1, SCARRY8(pVar9,1) ||\n            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        group.elems = (position *)xrealloc(group.elems,n);\n        group.alloc = lVar30;\n      }\n      group.elems[group.nelem].index = sVar26;\n      group.elems[group.nelem].constraint = (uint)uVar6;\n      group.nelem = group.nelem + 1;\nLAB_0011435a:\n      lVar40 = lVar40 + 1;\n      ppVar15 = ppVar15 + 1;\n    } while (lVar40 != lVar33);\n  }" { (expression_statement "lVar40 = 0;" (assignment_expression "lVar40 = 0" identifier = number_literal) ;) (expression_statement "uVar27 = (uint)(uc >> 6);" (assignment_expression "uVar27 = (uint)(uc >> 6)" identifier = (call_expression "(uint)(uc >> 6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uc >> 6)" ( (binary_expression "uc >> 6" identifier >> number_literal) )))) ;) (expression_statement "uVar14 = 1L << (uc & 0x3f);" (assignment_expression "uVar14 = 1L << (uc & 0x3f)" identifier = (binary_expression "1L << (uc & 0x3f)" number_literal << (parenthesized_expression "(uc & 0x3f)" ( (binary_expression "uc & 0x3f" identifier & number_literal) )))) ;) (expression_statement "ppVar15 = p_00;" (assignment_expression "ppVar15 = p_00" identifier = identifier) ;) (do_statement "do {\n      while( true ) {\n        sVar26 = ppVar15->index;\n        uVar6 = *(undefined8 *)&ppVar15->constraint;\n        p = *ppVar15;\n        uVar23 = ppVar15->constraint;\n        uVar36 = d->tokens[sVar26];\n        local_110 = (uint)uVar14;\n        uStack_10c = (uint)(uVar14 >> 0x20);\n        if (uVar36 < 0x100) break;\n        if ((long)uVar36 < 0x114) {\n          if (uVar36 != 0x10a) goto LAB_0011435a;\n          pdVar31 = d->states + s;\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[d->canychar].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[d->canychar].w + 2);\n          bVar22 = (byte)(matches.w[uVar27] >> (uc & 0x3f)) & 1;\n          if ((pdVar31->context & uVar23 & 7) != 0) {\n            if ((pdVar31->mbps).nelem == 0) {\n              ppVar13 = (position *)xmalloc(0x10);\n              pVar10 = _UNK_001282a8;\n              pVar9 = _DAT_001282a0;\n              (pdVar31->mbps).elems = ppVar13;\n              (pdVar31->mbps).nelem = pVar9;\n              (pdVar31->mbps).alloc = pVar10;\n              pdVar31 = d->states + s;\n            }\n            insert(p,&pdVar31->mbps);\n          }\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar22 != 0) goto LAB_00114267;\n        }\n        else {\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2);\n          if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar22 = 0;\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) {\nLAB_0011485e:\n            bVar3 = d->states[s].context;\n            cVar19 = matches.w[0];\n            cVar32 = matches.w[2];\n            cVar35 = matches.w[1];\n            uVar36 = matches.w[3];\n            if (((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0) {\n              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];\n              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];\n              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ~(d->syntax).letters.w[0];\n              cVar35 = cVar35 & ~(d->syntax).letters.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = cVar32 & ~(d->syntax).letters.w[2];\n              uVar36 = uVar36 & ~(d->syntax).letters.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if ((uVar23 & bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);\n              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);\n              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0) goto LAB_0011435a;\n            if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011445b;\n          }\n        }\n        local_118 = (uint)cVar32;\n        uStack_114 = (uint)(cVar32 >> 0x20);\n        lVar40 = lVar40 + 1;\n        ppVar15 = ppVar15 + 1;\n        label.w[2]._0_4_ = ~local_118 & (uint)label.w[2];\n        label.w[2]._4_4_ = ~uStack_114 & label.w[2]._4_4_;\n        label.w[3]._0_4_ = ~local_110 & (uint)label.w[3];\n        label.w[3]._4_4_ = ~uStack_10c & label.w[3]._4_4_;\n        label.w[0] = ~cVar19 & label.w[0];\n        label.w[1] = ~cVar35 & label.w[1];\n        if (lVar40 == lVar33) goto LAB_001144c5;\n      }\n      matches.w[0] = 0;\n      matches.w[1] = 0;\n      matches.w[2] = 0;\n      matches.w[3] = 0;\n      matches.w[uVar36 >> 6 & 0x3ffffff] = 1L << ((byte)uVar36 & 0x3f);\n      if (uVar36 != uc) goto LAB_0011482f;\nLAB_0011423a:\n      cVar19 = matches.w[0];\n      cVar32 = matches.w[2];\n      cVar35 = matches.w[1];\n      if (uVar23 != 0x1ff) {\n        bVar22 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      pVar9 = group.alloc;\n      local_118 = (uint)cVar32;\n      uStack_114 = (uint)(cVar32 >> 0x20);\n      label.w[2]._0_4_ = local_118 & (uint)label.w[2];\n      label.w[2]._4_4_ = uStack_114 & label.w[2]._4_4_;\n      label.w[3]._0_4_ = local_110 & (uint)label.w[3];\n      label.w[3]._4_4_ = uStack_10c & label.w[3]._4_4_;\n      label.w[0] = cVar19 & label.w[0];\n      label.w[1] = cVar35 & label.w[1];\n      if (group.alloc <= group.nelem) {\n        lVar30 = (group.alloc >> 1) + group.alloc;\n        if ((SCARRY8(group.alloc >> 1,group.alloc)) ||\n           (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))) {\n          lVar30 = 0x7ffffffffffffff;\n          n = 0x7ffffffffffffff0;\n        }\n        else if ((long)n < 0x80) {\n          n = 0x80;\n          lVar30 = 8;\n        }\n        if (group.elems == (position *)0x0) {\n          group.alloc = 0;\n        }\n        if ((lVar30 == pVar9 || lVar30 - pVar9 < 0) &&\n           ((lVar30 = pVar9 + 1, SCARRY8(pVar9,1) ||\n            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        group.elems = (position *)xrealloc(group.elems,n);\n        group.alloc = lVar30;\n      }\n      group.elems[group.nelem].index = sVar26;\n      group.elems[group.nelem].constraint = (uint)uVar6;\n      group.nelem = group.nelem + 1;\nLAB_0011435a:\n      lVar40 = lVar40 + 1;\n      ppVar15 = ppVar15 + 1;\n    } while (lVar40 != lVar33);" do (compound_statement "{\n      while( true ) {\n        sVar26 = ppVar15->index;\n        uVar6 = *(undefined8 *)&ppVar15->constraint;\n        p = *ppVar15;\n        uVar23 = ppVar15->constraint;\n        uVar36 = d->tokens[sVar26];\n        local_110 = (uint)uVar14;\n        uStack_10c = (uint)(uVar14 >> 0x20);\n        if (uVar36 < 0x100) break;\n        if ((long)uVar36 < 0x114) {\n          if (uVar36 != 0x10a) goto LAB_0011435a;\n          pdVar31 = d->states + s;\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[d->canychar].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[d->canychar].w + 2);\n          bVar22 = (byte)(matches.w[uVar27] >> (uc & 0x3f)) & 1;\n          if ((pdVar31->context & uVar23 & 7) != 0) {\n            if ((pdVar31->mbps).nelem == 0) {\n              ppVar13 = (position *)xmalloc(0x10);\n              pVar10 = _UNK_001282a8;\n              pVar9 = _DAT_001282a0;\n              (pdVar31->mbps).elems = ppVar13;\n              (pdVar31->mbps).nelem = pVar9;\n              (pdVar31->mbps).alloc = pVar10;\n              pdVar31 = d->states + s;\n            }\n            insert(p,&pdVar31->mbps);\n          }\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar22 != 0) goto LAB_00114267;\n        }\n        else {\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2);\n          if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar22 = 0;\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) {\nLAB_0011485e:\n            bVar3 = d->states[s].context;\n            cVar19 = matches.w[0];\n            cVar32 = matches.w[2];\n            cVar35 = matches.w[1];\n            uVar36 = matches.w[3];\n            if (((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0) {\n              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];\n              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];\n              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ~(d->syntax).letters.w[0];\n              cVar35 = cVar35 & ~(d->syntax).letters.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = cVar32 & ~(d->syntax).letters.w[2];\n              uVar36 = uVar36 & ~(d->syntax).letters.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if ((uVar23 & bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);\n              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);\n              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0) goto LAB_0011435a;\n            if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011445b;\n          }\n        }\n        local_118 = (uint)cVar32;\n        uStack_114 = (uint)(cVar32 >> 0x20);\n        lVar40 = lVar40 + 1;\n        ppVar15 = ppVar15 + 1;\n        label.w[2]._0_4_ = ~local_118 & (uint)label.w[2];\n        label.w[2]._4_4_ = ~uStack_114 & label.w[2]._4_4_;\n        label.w[3]._0_4_ = ~local_110 & (uint)label.w[3];\n        label.w[3]._4_4_ = ~uStack_10c & label.w[3]._4_4_;\n        label.w[0] = ~cVar19 & label.w[0];\n        label.w[1] = ~cVar35 & label.w[1];\n        if (lVar40 == lVar33) goto LAB_001144c5;\n      }\n      matches.w[0] = 0;\n      matches.w[1] = 0;\n      matches.w[2] = 0;\n      matches.w[3] = 0;\n      matches.w[uVar36 >> 6 & 0x3ffffff] = 1L << ((byte)uVar36 & 0x3f);\n      if (uVar36 != uc) goto LAB_0011482f;\nLAB_0011423a:\n      cVar19 = matches.w[0];\n      cVar32 = matches.w[2];\n      cVar35 = matches.w[1];\n      if (uVar23 != 0x1ff) {\n        bVar22 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      pVar9 = group.alloc;\n      local_118 = (uint)cVar32;\n      uStack_114 = (uint)(cVar32 >> 0x20);\n      label.w[2]._0_4_ = local_118 & (uint)label.w[2];\n      label.w[2]._4_4_ = uStack_114 & label.w[2]._4_4_;\n      label.w[3]._0_4_ = local_110 & (uint)label.w[3];\n      label.w[3]._4_4_ = uStack_10c & label.w[3]._4_4_;\n      label.w[0] = cVar19 & label.w[0];\n      label.w[1] = cVar35 & label.w[1];\n      if (group.alloc <= group.nelem) {\n        lVar30 = (group.alloc >> 1) + group.alloc;\n        if ((SCARRY8(group.alloc >> 1,group.alloc)) ||\n           (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))) {\n          lVar30 = 0x7ffffffffffffff;\n          n = 0x7ffffffffffffff0;\n        }\n        else if ((long)n < 0x80) {\n          n = 0x80;\n          lVar30 = 8;\n        }\n        if (group.elems == (position *)0x0) {\n          group.alloc = 0;\n        }\n        if ((lVar30 == pVar9 || lVar30 - pVar9 < 0) &&\n           ((lVar30 = pVar9 + 1, SCARRY8(pVar9,1) ||\n            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        group.elems = (position *)xrealloc(group.elems,n);\n        group.alloc = lVar30;\n      }\n      group.elems[group.nelem].index = sVar26;\n      group.elems[group.nelem].constraint = (uint)uVar6;\n      group.nelem = group.nelem + 1;\nLAB_0011435a:\n      lVar40 = lVar40 + 1;\n      ppVar15 = ppVar15 + 1;\n    }" { (while_statement "while( true ) {\n        sVar26 = ppVar15->index;\n        uVar6 = *(undefined8 *)&ppVar15->constraint;\n        p = *ppVar15;\n        uVar23 = ppVar15->constraint;\n        uVar36 = d->tokens[sVar26];\n        local_110 = (uint)uVar14;\n        uStack_10c = (uint)(uVar14 >> 0x20);\n        if (uVar36 < 0x100) break;\n        if ((long)uVar36 < 0x114) {\n          if (uVar36 != 0x10a) goto LAB_0011435a;\n          pdVar31 = d->states + s;\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[d->canychar].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[d->canychar].w + 2);\n          bVar22 = (byte)(matches.w[uVar27] >> (uc & 0x3f)) & 1;\n          if ((pdVar31->context & uVar23 & 7) != 0) {\n            if ((pdVar31->mbps).nelem == 0) {\n              ppVar13 = (position *)xmalloc(0x10);\n              pVar10 = _UNK_001282a8;\n              pVar9 = _DAT_001282a0;\n              (pdVar31->mbps).elems = ppVar13;\n              (pdVar31->mbps).nelem = pVar9;\n              (pdVar31->mbps).alloc = pVar10;\n              pdVar31 = d->states + s;\n            }\n            insert(p,&pdVar31->mbps);\n          }\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar22 != 0) goto LAB_00114267;\n        }\n        else {\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2);\n          if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar22 = 0;\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) {\nLAB_0011485e:\n            bVar3 = d->states[s].context;\n            cVar19 = matches.w[0];\n            cVar32 = matches.w[2];\n            cVar35 = matches.w[1];\n            uVar36 = matches.w[3];\n            if (((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0) {\n              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];\n              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];\n              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ~(d->syntax).letters.w[0];\n              cVar35 = cVar35 & ~(d->syntax).letters.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = cVar32 & ~(d->syntax).letters.w[2];\n              uVar36 = uVar36 & ~(d->syntax).letters.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if ((uVar23 & bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);\n              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);\n              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0) goto LAB_0011435a;\n            if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011445b;\n          }\n        }\n        local_118 = (uint)cVar32;\n        uStack_114 = (uint)(cVar32 >> 0x20);\n        lVar40 = lVar40 + 1;\n        ppVar15 = ppVar15 + 1;\n        label.w[2]._0_4_ = ~local_118 & (uint)label.w[2];\n        label.w[2]._4_4_ = ~uStack_114 & label.w[2]._4_4_;\n        label.w[3]._0_4_ = ~local_110 & (uint)label.w[3];\n        label.w[3]._4_4_ = ~uStack_10c & label.w[3]._4_4_;\n        label.w[0] = ~cVar19 & label.w[0];\n        label.w[1] = ~cVar35 & label.w[1];\n        if (lVar40 == lVar33) goto LAB_001144c5;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        sVar26 = ppVar15->index;\n        uVar6 = *(undefined8 *)&ppVar15->constraint;\n        p = *ppVar15;\n        uVar23 = ppVar15->constraint;\n        uVar36 = d->tokens[sVar26];\n        local_110 = (uint)uVar14;\n        uStack_10c = (uint)(uVar14 >> 0x20);\n        if (uVar36 < 0x100) break;\n        if ((long)uVar36 < 0x114) {\n          if (uVar36 != 0x10a) goto LAB_0011435a;\n          pdVar31 = d->states + s;\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[d->canychar].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[d->canychar].w + 2);\n          bVar22 = (byte)(matches.w[uVar27] >> (uc & 0x3f)) & 1;\n          if ((pdVar31->context & uVar23 & 7) != 0) {\n            if ((pdVar31->mbps).nelem == 0) {\n              ppVar13 = (position *)xmalloc(0x10);\n              pVar10 = _UNK_001282a8;\n              pVar9 = _DAT_001282a0;\n              (pdVar31->mbps).elems = ppVar13;\n              (pdVar31->mbps).nelem = pVar9;\n              (pdVar31->mbps).alloc = pVar10;\n              pdVar31 = d->states + s;\n            }\n            insert(p,&pdVar31->mbps);\n          }\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar22 != 0) goto LAB_00114267;\n        }\n        else {\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2);\n          if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar22 = 0;\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) {\nLAB_0011485e:\n            bVar3 = d->states[s].context;\n            cVar19 = matches.w[0];\n            cVar32 = matches.w[2];\n            cVar35 = matches.w[1];\n            uVar36 = matches.w[3];\n            if (((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0) {\n              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];\n              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];\n              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ~(d->syntax).letters.w[0];\n              cVar35 = cVar35 & ~(d->syntax).letters.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = cVar32 & ~(d->syntax).letters.w[2];\n              uVar36 = uVar36 & ~(d->syntax).letters.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if ((uVar23 & bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);\n              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);\n              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0) goto LAB_0011435a;\n            if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011445b;\n          }\n        }\n        local_118 = (uint)cVar32;\n        uStack_114 = (uint)(cVar32 >> 0x20);\n        lVar40 = lVar40 + 1;\n        ppVar15 = ppVar15 + 1;\n        label.w[2]._0_4_ = ~local_118 & (uint)label.w[2];\n        label.w[2]._4_4_ = ~uStack_114 & label.w[2]._4_4_;\n        label.w[3]._0_4_ = ~local_110 & (uint)label.w[3];\n        label.w[3]._4_4_ = ~uStack_10c & label.w[3]._4_4_;\n        label.w[0] = ~cVar19 & label.w[0];\n        label.w[1] = ~cVar35 & label.w[1];\n        if (lVar40 == lVar33) goto LAB_001144c5;\n      }" { (expression_statement "sVar26 = ppVar15->index;" (assignment_expression "sVar26 = ppVar15->index" identifier = (field_expression "ppVar15->index" identifier -> field_identifier)) ;) (expression_statement "uVar6 = *(undefined8 *)&ppVar15->constraint;" (assignment_expression "uVar6 = *(undefined8 *)&ppVar15->constraint" identifier = (pointer_expression "*(undefined8 *)&ppVar15->constraint" * (cast_expression "(undefined8 *)&ppVar15->constraint" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ppVar15->constraint" & (field_expression "ppVar15->constraint" identifier -> field_identifier))))) ;) (expression_statement "p = *ppVar15;" (assignment_expression "p = *ppVar15" identifier = (pointer_expression "*ppVar15" * identifier)) ;) (expression_statement "uVar23 = ppVar15->constraint;" (assignment_expression "uVar23 = ppVar15->constraint" identifier = (field_expression "ppVar15->constraint" identifier -> field_identifier)) ;) (expression_statement "uVar36 = d->tokens[sVar26];" (assignment_expression "uVar36 = d->tokens[sVar26]" identifier = (subscript_expression "d->tokens[sVar26]" (field_expression "d->tokens" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "local_110 = (uint)uVar14;" (assignment_expression "local_110 = (uint)uVar14" identifier = (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uStack_10c = (uint)(uVar14 >> 0x20);" (assignment_expression "uStack_10c = (uint)(uVar14 >> 0x20)" identifier = (call_expression "(uint)(uVar14 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar14 >> 0x20)" ( (binary_expression "uVar14 >> 0x20" identifier >> number_literal) )))) ;) (if_statement "if (uVar36 < 0x100) break;" if (parenthesized_expression "(uVar36 < 0x100)" ( (binary_expression "uVar36 < 0x100" identifier < number_literal) )) (break_statement "break;" break ;)) (if_statement "if ((long)uVar36 < 0x114) {\n          if (uVar36 != 0x10a) goto LAB_0011435a;\n          pdVar31 = d->states + s;\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[d->canychar].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[d->canychar].w + 2);\n          bVar22 = (byte)(matches.w[uVar27] >> (uc & 0x3f)) & 1;\n          if ((pdVar31->context & uVar23 & 7) != 0) {\n            if ((pdVar31->mbps).nelem == 0) {\n              ppVar13 = (position *)xmalloc(0x10);\n              pVar10 = _UNK_001282a8;\n              pVar9 = _DAT_001282a0;\n              (pdVar31->mbps).elems = ppVar13;\n              (pdVar31->mbps).nelem = pVar9;\n              (pdVar31->mbps).alloc = pVar10;\n              pdVar31 = d->states + s;\n            }\n            insert(p,&pdVar31->mbps);\n          }\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar22 != 0) goto LAB_00114267;\n        }\n        else {\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2);\n          if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar22 = 0;\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) {\nLAB_0011485e:\n            bVar3 = d->states[s].context;\n            cVar19 = matches.w[0];\n            cVar32 = matches.w[2];\n            cVar35 = matches.w[1];\n            uVar36 = matches.w[3];\n            if (((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0) {\n              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];\n              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];\n              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ~(d->syntax).letters.w[0];\n              cVar35 = cVar35 & ~(d->syntax).letters.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = cVar32 & ~(d->syntax).letters.w[2];\n              uVar36 = uVar36 & ~(d->syntax).letters.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if ((uVar23 & bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);\n              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);\n              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0) goto LAB_0011435a;\n            if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011445b;\n          }\n        }" if (parenthesized_expression "((long)uVar36 < 0x114)" ( (binary_expression "(long)uVar36 < 0x114" (cast_expression "(long)uVar36" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n          if (uVar36 != 0x10a) goto LAB_0011435a;\n          pdVar31 = d->states + s;\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[d->canychar].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[d->canychar].w + 2);\n          bVar22 = (byte)(matches.w[uVar27] >> (uc & 0x3f)) & 1;\n          if ((pdVar31->context & uVar23 & 7) != 0) {\n            if ((pdVar31->mbps).nelem == 0) {\n              ppVar13 = (position *)xmalloc(0x10);\n              pVar10 = _UNK_001282a8;\n              pVar9 = _DAT_001282a0;\n              (pdVar31->mbps).elems = ppVar13;\n              (pdVar31->mbps).nelem = pVar9;\n              (pdVar31->mbps).alloc = pVar10;\n              pdVar31 = d->states + s;\n            }\n            insert(p,&pdVar31->mbps);\n          }\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar22 != 0) goto LAB_00114267;\n        }" { (if_statement "if (uVar36 != 0x10a) goto LAB_0011435a;" if (parenthesized_expression "(uVar36 != 0x10a)" ( (binary_expression "uVar36 != 0x10a" identifier != number_literal) )) (goto_statement "goto LAB_0011435a;" goto statement_identifier ;)) (expression_statement "pdVar31 = d->states + s;" (assignment_expression "pdVar31 = d->states + s" identifier = (binary_expression "d->states + s" (field_expression "d->states" identifier -> field_identifier) + identifier)) ;) (expression_statement "matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[d->canychar].w;" (assignment_expression "matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[d->canychar].w" (field_expression "matches.w._0_16_" (field_expression "matches.w" identifier . field_identifier) . field_identifier) = (pointer_expression "*(undefined1 (*) [16])d->charclasses[d->canychar].w" * (cast_expression "(undefined1 (*) [16])d->charclasses[d->canychar].w" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (field_expression "d->charclasses[d->canychar].w" (subscript_expression "d->charclasses[d->canychar]" (field_expression "d->charclasses" identifier -> field_identifier) [ (field_expression "d->canychar" identifier -> field_identifier) ]) . field_identifier)))) ;) (expression_statement "matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[d->canychar].w + 2);" (assignment_expression "matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[d->canychar].w + 2)" (field_expression "matches.w._16_16_" (field_expression "matches.w" identifier . field_identifier) . field_identifier) = (pointer_expression "*(undefined1 (*) [16])(d->charclasses[d->canychar].w + 2)" * (cast_expression "(undefined1 (*) [16])(d->charclasses[d->canychar].w + 2)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(d->charclasses[d->canychar].w + 2)" ( (binary_expression "d->charclasses[d->canychar].w + 2" (field_expression "d->charclasses[d->canychar].w" (subscript_expression "d->charclasses[d->canychar]" (field_expression "d->charclasses" identifier -> field_identifier) [ (field_expression "d->canychar" identifier -> field_identifier) ]) . field_identifier) + number_literal) ))))) ;) (expression_statement "bVar22 = (byte)(matches.w[uVar27] >> (uc & 0x3f)) & 1;" (assignment_expression "bVar22 = (byte)(matches.w[uVar27] >> (uc & 0x3f)) & 1" identifier = (binary_expression "(byte)(matches.w[uVar27] >> (uc & 0x3f)) & 1" (call_expression "(byte)(matches.w[uVar27] >> (uc & 0x3f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(matches.w[uVar27] >> (uc & 0x3f))" ( (binary_expression "matches.w[uVar27] >> (uc & 0x3f)" (subscript_expression "matches.w[uVar27]" (field_expression "matches.w" identifier . field_identifier) [ identifier ]) >> (parenthesized_expression "(uc & 0x3f)" ( (binary_expression "uc & 0x3f" identifier & number_literal) ))) ))) & number_literal)) ;) (if_statement "if ((pdVar31->context & uVar23 & 7) != 0) {\n            if ((pdVar31->mbps).nelem == 0) {\n              ppVar13 = (position *)xmalloc(0x10);\n              pVar10 = _UNK_001282a8;\n              pVar9 = _DAT_001282a0;\n              (pdVar31->mbps).elems = ppVar13;\n              (pdVar31->mbps).nelem = pVar9;\n              (pdVar31->mbps).alloc = pVar10;\n              pdVar31 = d->states + s;\n            }\n            insert(p,&pdVar31->mbps);\n          }" if (parenthesized_expression "((pdVar31->context & uVar23 & 7) != 0)" ( (binary_expression "(pdVar31->context & uVar23 & 7) != 0" (parenthesized_expression "(pdVar31->context & uVar23 & 7)" ( (binary_expression "pdVar31->context & uVar23 & 7" (binary_expression "pdVar31->context & uVar23" (field_expression "pdVar31->context" identifier -> field_identifier) & identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n            if ((pdVar31->mbps).nelem == 0) {\n              ppVar13 = (position *)xmalloc(0x10);\n              pVar10 = _UNK_001282a8;\n              pVar9 = _DAT_001282a0;\n              (pdVar31->mbps).elems = ppVar13;\n              (pdVar31->mbps).nelem = pVar9;\n              (pdVar31->mbps).alloc = pVar10;\n              pdVar31 = d->states + s;\n            }\n            insert(p,&pdVar31->mbps);\n          }" { (if_statement "if ((pdVar31->mbps).nelem == 0) {\n              ppVar13 = (position *)xmalloc(0x10);\n              pVar10 = _UNK_001282a8;\n              pVar9 = _DAT_001282a0;\n              (pdVar31->mbps).elems = ppVar13;\n              (pdVar31->mbps).nelem = pVar9;\n              (pdVar31->mbps).alloc = pVar10;\n              pdVar31 = d->states + s;\n            }" if (parenthesized_expression "((pdVar31->mbps).nelem == 0)" ( (binary_expression "(pdVar31->mbps).nelem == 0" (field_expression "(pdVar31->mbps).nelem" (parenthesized_expression "(pdVar31->mbps)" ( (field_expression "pdVar31->mbps" identifier -> field_identifier) )) . field_identifier) == number_literal) )) (compound_statement "{\n              ppVar13 = (position *)xmalloc(0x10);\n              pVar10 = _UNK_001282a8;\n              pVar9 = _DAT_001282a0;\n              (pdVar31->mbps).elems = ppVar13;\n              (pdVar31->mbps).nelem = pVar9;\n              (pdVar31->mbps).alloc = pVar10;\n              pdVar31 = d->states + s;\n            }" { (expression_statement "ppVar13 = (position *)xmalloc(0x10);" (assignment_expression "ppVar13 = (position *)xmalloc(0x10)" identifier = (cast_expression "(position *)xmalloc(0x10)" ( (type_descriptor "position *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "pVar10 = _UNK_001282a8;" (assignment_expression "pVar10 = _UNK_001282a8" identifier = identifier) ;) (expression_statement "pVar9 = _DAT_001282a0;" (assignment_expression "pVar9 = _DAT_001282a0" identifier = identifier) ;) (expression_statement "(pdVar31->mbps).elems = ppVar13;" (assignment_expression "(pdVar31->mbps).elems = ppVar13" (field_expression "(pdVar31->mbps).elems" (parenthesized_expression "(pdVar31->mbps)" ( (field_expression "pdVar31->mbps" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(pdVar31->mbps).nelem = pVar9;" (assignment_expression "(pdVar31->mbps).nelem = pVar9" (field_expression "(pdVar31->mbps).nelem" (parenthesized_expression "(pdVar31->mbps)" ( (field_expression "pdVar31->mbps" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(pdVar31->mbps).alloc = pVar10;" (assignment_expression "(pdVar31->mbps).alloc = pVar10" (field_expression "(pdVar31->mbps).alloc" (parenthesized_expression "(pdVar31->mbps)" ( (field_expression "pdVar31->mbps" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "pdVar31 = d->states + s;" (assignment_expression "pdVar31 = d->states + s" identifier = (binary_expression "d->states + s" (field_expression "d->states" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "insert(p,&pdVar31->mbps);" (call_expression "insert(p,&pdVar31->mbps)" identifier (argument_list "(p,&pdVar31->mbps)" ( identifier , (pointer_expression "&pdVar31->mbps" & (field_expression "pdVar31->mbps" identifier -> field_identifier)) ))) ;) })) (expression_statement "cVar19 = matches.w[0];" (assignment_expression "cVar19 = matches.w[0]" identifier = (subscript_expression "matches.w[0]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "cVar32 = matches.w[2];" (assignment_expression "cVar32 = matches.w[2]" identifier = (subscript_expression "matches.w[2]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "cVar35 = matches.w[1];" (assignment_expression "cVar35 = matches.w[1]" identifier = (subscript_expression "matches.w[1]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ])) ;) (if_statement "if (uVar23 != 0x1ff) goto LAB_0011485e;" if (parenthesized_expression "(uVar23 != 0x1ff)" ( (binary_expression "uVar23 != 0x1ff" identifier != number_literal) )) (goto_statement "goto LAB_0011485e;" goto statement_identifier ;)) (labeled_statement "LAB_0011445b:\n          if (bVar22 != 0) goto LAB_00114267;" statement_identifier : (if_statement "if (bVar22 != 0) goto LAB_00114267;" if (parenthesized_expression "(bVar22 != 0)" ( (binary_expression "bVar22 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00114267;" goto statement_identifier ;))) }) (else_clause "else {\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2);\n          if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar22 = 0;\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) {\nLAB_0011485e:\n            bVar3 = d->states[s].context;\n            cVar19 = matches.w[0];\n            cVar32 = matches.w[2];\n            cVar35 = matches.w[1];\n            uVar36 = matches.w[3];\n            if (((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0) {\n              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];\n              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];\n              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ~(d->syntax).letters.w[0];\n              cVar35 = cVar35 & ~(d->syntax).letters.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = cVar32 & ~(d->syntax).letters.w[2];\n              uVar36 = uVar36 & ~(d->syntax).letters.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if ((uVar23 & bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);\n              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);\n              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0) goto LAB_0011435a;\n            if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011445b;\n          }\n        }" else (compound_statement "{\n          matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w;\n          matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2);\n          if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar22 = 0;\n          cVar19 = matches.w[0];\n          cVar32 = matches.w[2];\n          cVar35 = matches.w[1];\n          if (uVar23 != 0x1ff) {\nLAB_0011485e:\n            bVar3 = d->states[s].context;\n            cVar19 = matches.w[0];\n            cVar32 = matches.w[2];\n            cVar35 = matches.w[1];\n            uVar36 = matches.w[3];\n            if (((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0) {\n              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];\n              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];\n              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ~(d->syntax).letters.w[0];\n              cVar35 = cVar35 & ~(d->syntax).letters.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = cVar32 & ~(d->syntax).letters.w[2];\n              uVar36 = uVar36 & ~(d->syntax).letters.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if ((uVar23 & bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);\n              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);\n              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0) goto LAB_0011435a;\n            if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011445b;\n          }\n        }" { (expression_statement "matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w;" (assignment_expression "matches.w._0_16_ = *(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w" (field_expression "matches.w._0_16_" (field_expression "matches.w" identifier . field_identifier) . field_identifier) = (pointer_expression "*(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w" * (cast_expression "(undefined1 (*) [16])d->charclasses[uVar36 - 0x114].w" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (field_expression "d->charclasses[uVar36 - 0x114].w" (subscript_expression "d->charclasses[uVar36 - 0x114]" (field_expression "d->charclasses" identifier -> field_identifier) [ (binary_expression "uVar36 - 0x114" identifier - number_literal) ]) . field_identifier)))) ;) (expression_statement "matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2);" (assignment_expression "matches.w._16_16_ = *(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2)" (field_expression "matches.w._16_16_" (field_expression "matches.w" identifier . field_identifier) . field_identifier) = (pointer_expression "*(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2)" * (cast_expression "(undefined1 (*) [16])(d->charclasses[uVar36 - 0x114].w + 2)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(d->charclasses[uVar36 - 0x114].w + 2)" ( (binary_expression "d->charclasses[uVar36 - 0x114].w + 2" (field_expression "d->charclasses[uVar36 - 0x114].w" (subscript_expression "d->charclasses[uVar36 - 0x114]" (field_expression "d->charclasses" identifier -> field_identifier) [ (binary_expression "uVar36 - 0x114" identifier - number_literal) ]) . field_identifier) + number_literal) ))))) ;) (if_statement "if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011423a;" if (parenthesized_expression "((matches.w[uVar27] & uVar14) != 0)" ( (binary_expression "(matches.w[uVar27] & uVar14) != 0" (parenthesized_expression "(matches.w[uVar27] & uVar14)" ( (binary_expression "matches.w[uVar27] & uVar14" (subscript_expression "matches.w[uVar27]" (field_expression "matches.w" identifier . field_identifier) [ identifier ]) & identifier) )) != number_literal) )) (goto_statement "goto LAB_0011423a;" goto statement_identifier ;)) (labeled_statement "LAB_0011482f:\n          bVar22 = 0;" statement_identifier : (expression_statement "bVar22 = 0;" (assignment_expression "bVar22 = 0" identifier = number_literal) ;)) (expression_statement "cVar19 = matches.w[0];" (assignment_expression "cVar19 = matches.w[0]" identifier = (subscript_expression "matches.w[0]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "cVar32 = matches.w[2];" (assignment_expression "cVar32 = matches.w[2]" identifier = (subscript_expression "matches.w[2]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "cVar35 = matches.w[1];" (assignment_expression "cVar35 = matches.w[1]" identifier = (subscript_expression "matches.w[1]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ])) ;) (if_statement "if (uVar23 != 0x1ff) {\nLAB_0011485e:\n            bVar3 = d->states[s].context;\n            cVar19 = matches.w[0];\n            cVar32 = matches.w[2];\n            cVar35 = matches.w[1];\n            uVar36 = matches.w[3];\n            if (((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0) {\n              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];\n              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];\n              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ~(d->syntax).letters.w[0];\n              cVar35 = cVar35 & ~(d->syntax).letters.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = cVar32 & ~(d->syntax).letters.w[2];\n              uVar36 = uVar36 & ~(d->syntax).letters.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if ((uVar23 & bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);\n              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);\n              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0) goto LAB_0011435a;\n            if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011445b;\n          }" if (parenthesized_expression "(uVar23 != 0x1ff)" ( (binary_expression "uVar23 != 0x1ff" identifier != number_literal) )) (compound_statement "{\nLAB_0011485e:\n            bVar3 = d->states[s].context;\n            cVar19 = matches.w[0];\n            cVar32 = matches.w[2];\n            cVar35 = matches.w[1];\n            uVar36 = matches.w[3];\n            if (((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0) {\n              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];\n              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];\n              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ~(d->syntax).letters.w[0];\n              cVar35 = cVar35 & ~(d->syntax).letters.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = cVar32 & ~(d->syntax).letters.w[2];\n              uVar36 = uVar36 & ~(d->syntax).letters.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if ((uVar23 & bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);\n              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);\n              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }\n            if (((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0) goto LAB_0011435a;\n            if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011445b;\n          }" { (labeled_statement "LAB_0011485e:\n            bVar3 = d->states[s].context;" statement_identifier : (expression_statement "bVar3 = d->states[s].context;" (assignment_expression "bVar3 = d->states[s].context" identifier = (field_expression "d->states[s].context" (subscript_expression "d->states[s]" (field_expression "d->states" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;)) (expression_statement "cVar19 = matches.w[0];" (assignment_expression "cVar19 = matches.w[0]" identifier = (subscript_expression "matches.w[0]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "cVar32 = matches.w[2];" (assignment_expression "cVar32 = matches.w[2]" identifier = (subscript_expression "matches.w[2]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "cVar35 = matches.w[1];" (assignment_expression "cVar35 = matches.w[1]" identifier = (subscript_expression "matches.w[1]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "uVar36 = matches.w[3];" (assignment_expression "uVar36 = matches.w[3]" identifier = (subscript_expression "matches.w[3]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ])) ;) (if_statement "if (((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0) {\n              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];\n              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];\n              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }" if (parenthesized_expression "(((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0)" ( (binary_expression "((int)uVar23 >> 6 & (uint)bVar3 & 7) == 0" (parenthesized_expression "((int)uVar23 >> 6 & (uint)bVar3 & 7)" ( (binary_expression "(int)uVar23 >> 6 & (uint)bVar3 & 7" (binary_expression "(int)uVar23 >> 6 & (uint)bVar3" (binary_expression "(int)uVar23 >> 6" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n              cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];\n              cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];\n              uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }" { (expression_statement "cVar19 = matches.w[0] & ~(d->syntax).newline.w[0];" (assignment_expression "cVar19 = matches.w[0] & ~(d->syntax).newline.w[0]" identifier = (binary_expression "matches.w[0] & ~(d->syntax).newline.w[0]" (subscript_expression "matches.w[0]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) & (unary_expression "~(d->syntax).newline.w[0]" ~ (subscript_expression "(d->syntax).newline.w[0]" (field_expression "(d->syntax).newline.w" (field_expression "(d->syntax).newline" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])))) ;) (expression_statement "cVar35 = matches.w[1] & ~(d->syntax).newline.w[1];" (assignment_expression "cVar35 = matches.w[1] & ~(d->syntax).newline.w[1]" identifier = (binary_expression "matches.w[1] & ~(d->syntax).newline.w[1]" (subscript_expression "matches.w[1]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) & (unary_expression "~(d->syntax).newline.w[1]" ~ (subscript_expression "(d->syntax).newline.w[1]" (field_expression "(d->syntax).newline.w" (field_expression "(d->syntax).newline" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])))) ;) (expression_statement "matches.w[1] = cVar35;" (assignment_expression "matches.w[1] = cVar35" (subscript_expression "matches.w[1]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "matches.w[0] = cVar19;" (assignment_expression "matches.w[0] = cVar19" (subscript_expression "matches.w[0]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "cVar32 = matches.w[2] & ~(d->syntax).newline.w[2];" (assignment_expression "cVar32 = matches.w[2] & ~(d->syntax).newline.w[2]" identifier = (binary_expression "matches.w[2] & ~(d->syntax).newline.w[2]" (subscript_expression "matches.w[2]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) & (unary_expression "~(d->syntax).newline.w[2]" ~ (subscript_expression "(d->syntax).newline.w[2]" (field_expression "(d->syntax).newline.w" (field_expression "(d->syntax).newline" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])))) ;) (expression_statement "uVar36 = matches.w[3] & ~(d->syntax).newline.w[3];" (assignment_expression "uVar36 = matches.w[3] & ~(d->syntax).newline.w[3]" identifier = (binary_expression "matches.w[3] & ~(d->syntax).newline.w[3]" (subscript_expression "matches.w[3]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) & (unary_expression "~(d->syntax).newline.w[3]" ~ (subscript_expression "(d->syntax).newline.w[3]" (field_expression "(d->syntax).newline.w" (field_expression "(d->syntax).newline" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])))) ;) (expression_statement "matches.w[3] = uVar36;" (assignment_expression "matches.w[3] = uVar36" (subscript_expression "matches.w[3]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "matches.w[2] = cVar32;" (assignment_expression "matches.w[2] = cVar32" (subscript_expression "matches.w[2]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) = identifier) ;) })) (if_statement "if (((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ~(d->syntax).letters.w[0];\n              cVar35 = cVar35 & ~(d->syntax).letters.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = cVar32 & ~(d->syntax).letters.w[2];\n              uVar36 = uVar36 & ~(d->syntax).letters.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }" if (parenthesized_expression "(((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0)" ( (binary_expression "((int)uVar23 >> 3 & (uint)bVar3 & 7) == 0" (parenthesized_expression "((int)uVar23 >> 3 & (uint)bVar3 & 7)" ( (binary_expression "(int)uVar23 >> 3 & (uint)bVar3 & 7" (binary_expression "(int)uVar23 >> 3 & (uint)bVar3" (binary_expression "(int)uVar23 >> 3" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n              cVar19 = cVar19 & ~(d->syntax).letters.w[0];\n              cVar35 = cVar35 & ~(d->syntax).letters.w[1];\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              cVar32 = cVar32 & ~(d->syntax).letters.w[2];\n              uVar36 = uVar36 & ~(d->syntax).letters.w[3];\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }" { (expression_statement "cVar19 = cVar19 & ~(d->syntax).letters.w[0];" (assignment_expression "cVar19 = cVar19 & ~(d->syntax).letters.w[0]" identifier = (binary_expression "cVar19 & ~(d->syntax).letters.w[0]" identifier & (unary_expression "~(d->syntax).letters.w[0]" ~ (subscript_expression "(d->syntax).letters.w[0]" (field_expression "(d->syntax).letters.w" (field_expression "(d->syntax).letters" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])))) ;) (expression_statement "cVar35 = cVar35 & ~(d->syntax).letters.w[1];" (assignment_expression "cVar35 = cVar35 & ~(d->syntax).letters.w[1]" identifier = (binary_expression "cVar35 & ~(d->syntax).letters.w[1]" identifier & (unary_expression "~(d->syntax).letters.w[1]" ~ (subscript_expression "(d->syntax).letters.w[1]" (field_expression "(d->syntax).letters.w" (field_expression "(d->syntax).letters" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])))) ;) (expression_statement "matches.w[1] = cVar35;" (assignment_expression "matches.w[1] = cVar35" (subscript_expression "matches.w[1]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "matches.w[0] = cVar19;" (assignment_expression "matches.w[0] = cVar19" (subscript_expression "matches.w[0]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "cVar32 = cVar32 & ~(d->syntax).letters.w[2];" (assignment_expression "cVar32 = cVar32 & ~(d->syntax).letters.w[2]" identifier = (binary_expression "cVar32 & ~(d->syntax).letters.w[2]" identifier & (unary_expression "~(d->syntax).letters.w[2]" ~ (subscript_expression "(d->syntax).letters.w[2]" (field_expression "(d->syntax).letters.w" (field_expression "(d->syntax).letters" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])))) ;) (expression_statement "uVar36 = uVar36 & ~(d->syntax).letters.w[3];" (assignment_expression "uVar36 = uVar36 & ~(d->syntax).letters.w[3]" identifier = (binary_expression "uVar36 & ~(d->syntax).letters.w[3]" identifier & (unary_expression "~(d->syntax).letters.w[3]" ~ (subscript_expression "(d->syntax).letters.w[3]" (field_expression "(d->syntax).letters.w" (field_expression "(d->syntax).letters" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])))) ;) (expression_statement "matches.w[3] = uVar36;" (assignment_expression "matches.w[3] = uVar36" (subscript_expression "matches.w[3]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "matches.w[2] = cVar32;" (assignment_expression "matches.w[2] = cVar32" (subscript_expression "matches.w[2]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) = identifier) ;) })) (if_statement "if ((uVar23 & bVar3 & 7) == 0) {\n              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);\n              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);\n              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }" if (parenthesized_expression "((uVar23 & bVar3 & 7) == 0)" ( (binary_expression "(uVar23 & bVar3 & 7) == 0" (parenthesized_expression "(uVar23 & bVar3 & 7)" ( (binary_expression "uVar23 & bVar3 & 7" (binary_expression "uVar23 & bVar3" identifier & identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n              cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);\n              cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);\n              cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);\n              matches.w[1] = cVar35;\n              matches.w[0] = cVar19;\n              uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);\n              matches.w[3] = uVar36;\n              matches.w[2] = cVar32;\n            }" { (expression_statement "cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);" (assignment_expression "cVar19 = cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0])" identifier = (binary_expression "cVar19 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0])" identifier & (parenthesized_expression "((d->syntax).letters.w[0] | (d->syntax).newline.w[0])" ( (binary_expression "(d->syntax).letters.w[0] | (d->syntax).newline.w[0]" (subscript_expression "(d->syntax).letters.w[0]" (field_expression "(d->syntax).letters.w" (field_expression "(d->syntax).letters" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ]) | (subscript_expression "(d->syntax).newline.w[0]" (field_expression "(d->syntax).newline.w" (field_expression "(d->syntax).newline" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) )))) ;) (expression_statement "cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);" (assignment_expression "cVar35 = cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1])" identifier = (binary_expression "cVar35 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1])" identifier & (parenthesized_expression "((d->syntax).letters.w[1] | (d->syntax).newline.w[1])" ( (binary_expression "(d->syntax).letters.w[1] | (d->syntax).newline.w[1]" (subscript_expression "(d->syntax).letters.w[1]" (field_expression "(d->syntax).letters.w" (field_expression "(d->syntax).letters" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ]) | (subscript_expression "(d->syntax).newline.w[1]" (field_expression "(d->syntax).newline.w" (field_expression "(d->syntax).newline" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) )))) ;) (expression_statement "cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);" (assignment_expression "cVar32 = cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2])" identifier = (binary_expression "cVar32 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2])" identifier & (parenthesized_expression "((d->syntax).letters.w[2] | (d->syntax).newline.w[2])" ( (binary_expression "(d->syntax).letters.w[2] | (d->syntax).newline.w[2]" (subscript_expression "(d->syntax).letters.w[2]" (field_expression "(d->syntax).letters.w" (field_expression "(d->syntax).letters" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ]) | (subscript_expression "(d->syntax).newline.w[2]" (field_expression "(d->syntax).newline.w" (field_expression "(d->syntax).newline" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) )))) ;) (expression_statement "matches.w[1] = cVar35;" (assignment_expression "matches.w[1] = cVar35" (subscript_expression "matches.w[1]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "matches.w[0] = cVar19;" (assignment_expression "matches.w[0] = cVar19" (subscript_expression "matches.w[0]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);" (assignment_expression "uVar36 = uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3])" identifier = (binary_expression "uVar36 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3])" identifier & (parenthesized_expression "((d->syntax).letters.w[3] | (d->syntax).newline.w[3])" ( (binary_expression "(d->syntax).letters.w[3] | (d->syntax).newline.w[3]" (subscript_expression "(d->syntax).letters.w[3]" (field_expression "(d->syntax).letters.w" (field_expression "(d->syntax).letters" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ]) | (subscript_expression "(d->syntax).newline.w[3]" (field_expression "(d->syntax).newline.w" (field_expression "(d->syntax).newline" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) )))) ;) (expression_statement "matches.w[3] = uVar36;" (assignment_expression "matches.w[3] = uVar36" (subscript_expression "matches.w[3]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "matches.w[2] = cVar32;" (assignment_expression "matches.w[2] = cVar32" (subscript_expression "matches.w[2]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) = identifier) ;) })) (if_statement "if (((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0) goto LAB_0011435a;" if (parenthesized_expression "(((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0)" ( (binary_expression "((cVar19 == 0 && cVar35 == 0) && cVar32 == 0) && uVar36 == 0" (parenthesized_expression "((cVar19 == 0 && cVar35 == 0) && cVar32 == 0)" ( (binary_expression "(cVar19 == 0 && cVar35 == 0) && cVar32 == 0" (parenthesized_expression "(cVar19 == 0 && cVar35 == 0)" ( (binary_expression "cVar19 == 0 && cVar35 == 0" (binary_expression "cVar19 == 0" identifier == number_literal) && (binary_expression "cVar35 == 0" identifier == number_literal)) )) && (binary_expression "cVar32 == 0" identifier == number_literal)) )) && (binary_expression "uVar36 == 0" identifier == number_literal)) )) (goto_statement "goto LAB_0011435a;" goto statement_identifier ;)) (if_statement "if ((matches.w[uVar27] & uVar14) != 0) goto LAB_0011445b;" if (parenthesized_expression "((matches.w[uVar27] & uVar14) != 0)" ( (binary_expression "(matches.w[uVar27] & uVar14) != 0" (parenthesized_expression "(matches.w[uVar27] & uVar14)" ( (binary_expression "matches.w[uVar27] & uVar14" (subscript_expression "matches.w[uVar27]" (field_expression "matches.w" identifier . field_identifier) [ identifier ]) & identifier) )) != number_literal) )) (goto_statement "goto LAB_0011445b;" goto statement_identifier ;)) })) }))) (expression_statement "local_118 = (uint)cVar32;" (assignment_expression "local_118 = (uint)cVar32" identifier = (cast_expression "(uint)cVar32" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uStack_114 = (uint)(cVar32 >> 0x20);" (assignment_expression "uStack_114 = (uint)(cVar32 >> 0x20)" identifier = (call_expression "(uint)(cVar32 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(cVar32 >> 0x20)" ( (binary_expression "cVar32 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "lVar40 = lVar40 + 1;" (assignment_expression "lVar40 = lVar40 + 1" identifier = (binary_expression "lVar40 + 1" identifier + number_literal)) ;) (expression_statement "ppVar15 = ppVar15 + 1;" (assignment_expression "ppVar15 = ppVar15 + 1" identifier = (binary_expression "ppVar15 + 1" identifier + number_literal)) ;) (expression_statement "label.w[2]._0_4_ = ~local_118 & (uint)label.w[2];" (assignment_expression "label.w[2]._0_4_ = ~local_118 & (uint)label.w[2]" (field_expression "label.w[2]._0_4_" (subscript_expression "label.w[2]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier) = (binary_expression "~local_118 & (uint)label.w[2]" (unary_expression "~local_118" ~ identifier) & (cast_expression "(uint)label.w[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "label.w[2]" (field_expression "label.w" identifier . field_identifier) [ number_literal ])))) ;) (expression_statement "label.w[2]._4_4_ = ~uStack_114 & label.w[2]._4_4_;" (assignment_expression "label.w[2]._4_4_ = ~uStack_114 & label.w[2]._4_4_" (field_expression "label.w[2]._4_4_" (subscript_expression "label.w[2]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier) = (binary_expression "~uStack_114 & label.w[2]._4_4_" (unary_expression "~uStack_114" ~ identifier) & (field_expression "label.w[2]._4_4_" (subscript_expression "label.w[2]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "label.w[3]._0_4_ = ~local_110 & (uint)label.w[3];" (assignment_expression "label.w[3]._0_4_ = ~local_110 & (uint)label.w[3]" (field_expression "label.w[3]._0_4_" (subscript_expression "label.w[3]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier) = (binary_expression "~local_110 & (uint)label.w[3]" (unary_expression "~local_110" ~ identifier) & (cast_expression "(uint)label.w[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "label.w[3]" (field_expression "label.w" identifier . field_identifier) [ number_literal ])))) ;) (expression_statement "label.w[3]._4_4_ = ~uStack_10c & label.w[3]._4_4_;" (assignment_expression "label.w[3]._4_4_ = ~uStack_10c & label.w[3]._4_4_" (field_expression "label.w[3]._4_4_" (subscript_expression "label.w[3]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier) = (binary_expression "~uStack_10c & label.w[3]._4_4_" (unary_expression "~uStack_10c" ~ identifier) & (field_expression "label.w[3]._4_4_" (subscript_expression "label.w[3]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "label.w[0] = ~cVar19 & label.w[0];" (assignment_expression "label.w[0] = ~cVar19 & label.w[0]" (subscript_expression "label.w[0]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) = (binary_expression "~cVar19 & label.w[0]" (unary_expression "~cVar19" ~ identifier) & (subscript_expression "label.w[0]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]))) ;) (expression_statement "label.w[1] = ~cVar35 & label.w[1];" (assignment_expression "label.w[1] = ~cVar35 & label.w[1]" (subscript_expression "label.w[1]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) = (binary_expression "~cVar35 & label.w[1]" (unary_expression "~cVar35" ~ identifier) & (subscript_expression "label.w[1]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]))) ;) (if_statement "if (lVar40 == lVar33) goto LAB_001144c5;" if (parenthesized_expression "(lVar40 == lVar33)" ( (binary_expression "lVar40 == lVar33" identifier == identifier) )) (goto_statement "goto LAB_001144c5;" goto statement_identifier ;)) })) (expression_statement "matches.w[0] = 0;" (assignment_expression "matches.w[0] = 0" (subscript_expression "matches.w[0]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "matches.w[1] = 0;" (assignment_expression "matches.w[1] = 0" (subscript_expression "matches.w[1]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "matches.w[2] = 0;" (assignment_expression "matches.w[2] = 0" (subscript_expression "matches.w[2]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "matches.w[3] = 0;" (assignment_expression "matches.w[3] = 0" (subscript_expression "matches.w[3]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "matches.w[uVar36 >> 6 & 0x3ffffff] = 1L << ((byte)uVar36 & 0x3f);" (assignment_expression "matches.w[uVar36 >> 6 & 0x3ffffff] = 1L << ((byte)uVar36 & 0x3f)" (subscript_expression "matches.w[uVar36 >> 6 & 0x3ffffff]" (field_expression "matches.w" identifier . field_identifier) [ (binary_expression "uVar36 >> 6 & 0x3ffffff" (binary_expression "uVar36 >> 6" identifier >> number_literal) & number_literal) ]) = (binary_expression "1L << ((byte)uVar36 & 0x3f)" number_literal << (parenthesized_expression "((byte)uVar36 & 0x3f)" ( (binary_expression "(byte)uVar36 & 0x3f" (cast_expression "(byte)uVar36" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if (uVar36 != uc) goto LAB_0011482f;" if (parenthesized_expression "(uVar36 != uc)" ( (binary_expression "uVar36 != uc" identifier != identifier) )) (goto_statement "goto LAB_0011482f;" goto statement_identifier ;)) (labeled_statement "LAB_0011423a:\n      cVar19 = matches.w[0];" statement_identifier : (expression_statement "cVar19 = matches.w[0];" (assignment_expression "cVar19 = matches.w[0]" identifier = (subscript_expression "matches.w[0]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ])) ;)) (expression_statement "cVar32 = matches.w[2];" (assignment_expression "cVar32 = matches.w[2]" identifier = (subscript_expression "matches.w[2]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "cVar35 = matches.w[1];" (assignment_expression "cVar35 = matches.w[1]" identifier = (subscript_expression "matches.w[1]" (field_expression "matches.w" identifier . field_identifier) [ number_literal ])) ;) (if_statement "if (uVar23 != 0x1ff) {\n        bVar22 = 1;\n        goto LAB_0011485e;\n      }" if (parenthesized_expression "(uVar23 != 0x1ff)" ( (binary_expression "uVar23 != 0x1ff" identifier != number_literal) )) (compound_statement "{\n        bVar22 = 1;\n        goto LAB_0011485e;\n      }" { (expression_statement "bVar22 = 1;" (assignment_expression "bVar22 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0011485e;" goto statement_identifier ;) })) (labeled_statement "LAB_00114267:\n      pVar9 = group.alloc;" statement_identifier : (expression_statement "pVar9 = group.alloc;" (assignment_expression "pVar9 = group.alloc" identifier = (field_expression "group.alloc" identifier . field_identifier)) ;)) (expression_statement "local_118 = (uint)cVar32;" (assignment_expression "local_118 = (uint)cVar32" identifier = (cast_expression "(uint)cVar32" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uStack_114 = (uint)(cVar32 >> 0x20);" (assignment_expression "uStack_114 = (uint)(cVar32 >> 0x20)" identifier = (call_expression "(uint)(cVar32 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(cVar32 >> 0x20)" ( (binary_expression "cVar32 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "label.w[2]._0_4_ = local_118 & (uint)label.w[2];" (assignment_expression "label.w[2]._0_4_ = local_118 & (uint)label.w[2]" (field_expression "label.w[2]._0_4_" (subscript_expression "label.w[2]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier) = (binary_expression "local_118 & (uint)label.w[2]" identifier & (cast_expression "(uint)label.w[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "label.w[2]" (field_expression "label.w" identifier . field_identifier) [ number_literal ])))) ;) (expression_statement "label.w[2]._4_4_ = uStack_114 & label.w[2]._4_4_;" (assignment_expression "label.w[2]._4_4_ = uStack_114 & label.w[2]._4_4_" (field_expression "label.w[2]._4_4_" (subscript_expression "label.w[2]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier) = (binary_expression "uStack_114 & label.w[2]._4_4_" identifier & (field_expression "label.w[2]._4_4_" (subscript_expression "label.w[2]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "label.w[3]._0_4_ = local_110 & (uint)label.w[3];" (assignment_expression "label.w[3]._0_4_ = local_110 & (uint)label.w[3]" (field_expression "label.w[3]._0_4_" (subscript_expression "label.w[3]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier) = (binary_expression "local_110 & (uint)label.w[3]" identifier & (cast_expression "(uint)label.w[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "label.w[3]" (field_expression "label.w" identifier . field_identifier) [ number_literal ])))) ;) (expression_statement "label.w[3]._4_4_ = uStack_10c & label.w[3]._4_4_;" (assignment_expression "label.w[3]._4_4_ = uStack_10c & label.w[3]._4_4_" (field_expression "label.w[3]._4_4_" (subscript_expression "label.w[3]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier) = (binary_expression "uStack_10c & label.w[3]._4_4_" identifier & (field_expression "label.w[3]._4_4_" (subscript_expression "label.w[3]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "label.w[0] = cVar19 & label.w[0];" (assignment_expression "label.w[0] = cVar19 & label.w[0]" (subscript_expression "label.w[0]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) = (binary_expression "cVar19 & label.w[0]" identifier & (subscript_expression "label.w[0]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]))) ;) (expression_statement "label.w[1] = cVar35 & label.w[1];" (assignment_expression "label.w[1] = cVar35 & label.w[1]" (subscript_expression "label.w[1]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) = (binary_expression "cVar35 & label.w[1]" identifier & (subscript_expression "label.w[1]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]))) ;) (if_statement "if (group.alloc <= group.nelem) {\n        lVar30 = (group.alloc >> 1) + group.alloc;\n        if ((SCARRY8(group.alloc >> 1,group.alloc)) ||\n           (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))) {\n          lVar30 = 0x7ffffffffffffff;\n          n = 0x7ffffffffffffff0;\n        }\n        else if ((long)n < 0x80) {\n          n = 0x80;\n          lVar30 = 8;\n        }\n        if (group.elems == (position *)0x0) {\n          group.alloc = 0;\n        }\n        if ((lVar30 == pVar9 || lVar30 - pVar9 < 0) &&\n           ((lVar30 = pVar9 + 1, SCARRY8(pVar9,1) ||\n            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        group.elems = (position *)xrealloc(group.elems,n);\n        group.alloc = lVar30;\n      }" if (parenthesized_expression "(group.alloc <= group.nelem)" ( (binary_expression "group.alloc <= group.nelem" (field_expression "group.alloc" identifier . field_identifier) <= (field_expression "group.nelem" identifier . field_identifier)) )) (compound_statement "{\n        lVar30 = (group.alloc >> 1) + group.alloc;\n        if ((SCARRY8(group.alloc >> 1,group.alloc)) ||\n           (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))) {\n          lVar30 = 0x7ffffffffffffff;\n          n = 0x7ffffffffffffff0;\n        }\n        else if ((long)n < 0x80) {\n          n = 0x80;\n          lVar30 = 8;\n        }\n        if (group.elems == (position *)0x0) {\n          group.alloc = 0;\n        }\n        if ((lVar30 == pVar9 || lVar30 - pVar9 < 0) &&\n           ((lVar30 = pVar9 + 1, SCARRY8(pVar9,1) ||\n            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        group.elems = (position *)xrealloc(group.elems,n);\n        group.alloc = lVar30;\n      }" { (expression_statement "lVar30 = (group.alloc >> 1) + group.alloc;" (assignment_expression "lVar30 = (group.alloc >> 1) + group.alloc" identifier = (binary_expression "(group.alloc >> 1) + group.alloc" (parenthesized_expression "(group.alloc >> 1)" ( (binary_expression "group.alloc >> 1" (field_expression "group.alloc" identifier . field_identifier) >> number_literal) )) + (field_expression "group.alloc" identifier . field_identifier))) ;) (if_statement "if ((SCARRY8(group.alloc >> 1,group.alloc)) ||\n           (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))) {\n          lVar30 = 0x7ffffffffffffff;\n          n = 0x7ffffffffffffff0;\n        }\n        else if ((long)n < 0x80) {\n          n = 0x80;\n          lVar30 = 8;\n        }" if (parenthesized_expression "((SCARRY8(group.alloc >> 1,group.alloc)) ||\n           (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)))" ( (binary_expression "(SCARRY8(group.alloc >> 1,group.alloc)) ||\n           (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))" (parenthesized_expression "(SCARRY8(group.alloc >> 1,group.alloc))" ( (call_expression "SCARRY8(group.alloc >> 1,group.alloc)" identifier (argument_list "(group.alloc >> 1,group.alloc)" ( (binary_expression "group.alloc >> 1" (field_expression "group.alloc" identifier . field_identifier) >> number_literal) , (field_expression "group.alloc" identifier . field_identifier) ))) )) || (parenthesized_expression "(n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))" ( (comma_expression "n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)" (assignment_expression "n = lVar30 * 0x10" identifier = (binary_expression "lVar30 * 0x10" identifier * number_literal)) , (binary_expression "SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)" (call_expression "SEXT816((long)n)" identifier (argument_list "((long)n)" ( (cast_expression "(long)n" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) != (binary_expression "SEXT816(lVar30) * SEXT816(0x10)" (call_expression "SEXT816(lVar30)" identifier (argument_list "(lVar30)" ( identifier ))) * (call_expression "SEXT816(0x10)" identifier (argument_list "(0x10)" ( number_literal )))))) ))) )) (compound_statement "{\n          lVar30 = 0x7ffffffffffffff;\n          n = 0x7ffffffffffffff0;\n        }" { (expression_statement "lVar30 = 0x7ffffffffffffff;" (assignment_expression "lVar30 = 0x7ffffffffffffff" identifier = number_literal) ;) (expression_statement "n = 0x7ffffffffffffff0;" (assignment_expression "n = 0x7ffffffffffffff0" identifier = number_literal) ;) }) (else_clause "else if ((long)n < 0x80) {\n          n = 0x80;\n          lVar30 = 8;\n        }" else (if_statement "if ((long)n < 0x80) {\n          n = 0x80;\n          lVar30 = 8;\n        }" if (parenthesized_expression "((long)n < 0x80)" ( (binary_expression "(long)n < 0x80" (cast_expression "(long)n" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n          n = 0x80;\n          lVar30 = 8;\n        }" { (expression_statement "n = 0x80;" (assignment_expression "n = 0x80" identifier = number_literal) ;) (expression_statement "lVar30 = 8;" (assignment_expression "lVar30 = 8" identifier = number_literal) ;) })))) (if_statement "if (group.elems == (position *)0x0) {\n          group.alloc = 0;\n        }" if (parenthesized_expression "(group.elems == (position *)0x0)" ( (binary_expression "group.elems == (position *)0x0" (field_expression "group.elems" identifier . field_identifier) == (cast_expression "(position *)0x0" ( (type_descriptor "position *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          group.alloc = 0;\n        }" { (expression_statement "group.alloc = 0;" (assignment_expression "group.alloc = 0" (field_expression "group.alloc" identifier . field_identifier) = number_literal) ;) })) (if_statement "if ((lVar30 == pVar9 || lVar30 - pVar9 < 0) &&\n           ((lVar30 = pVar9 + 1, SCARRY8(pVar9,1) ||\n            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)))))\n        goto LAB_00114c1c;" if (parenthesized_expression "((lVar30 == pVar9 || lVar30 - pVar9 < 0) &&\n           ((lVar30 = pVar9 + 1, SCARRY8(pVar9,1) ||\n            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)))))" ( (binary_expression "(lVar30 == pVar9 || lVar30 - pVar9 < 0) &&\n           ((lVar30 = pVar9 + 1, SCARRY8(pVar9,1) ||\n            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))))" (parenthesized_expression "(lVar30 == pVar9 || lVar30 - pVar9 < 0)" ( (binary_expression "lVar30 == pVar9 || lVar30 - pVar9 < 0" (binary_expression "lVar30 == pVar9" identifier == identifier) || (binary_expression "lVar30 - pVar9 < 0" (binary_expression "lVar30 - pVar9" identifier - identifier) < number_literal)) )) && (parenthesized_expression "((lVar30 = pVar9 + 1, SCARRY8(pVar9,1) ||\n            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))))" ( (parenthesized_expression "(lVar30 = pVar9 + 1, SCARRY8(pVar9,1) ||\n            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)))" ( (comma_expression "lVar30 = pVar9 + 1, SCARRY8(pVar9,1) ||\n            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))" (assignment_expression "lVar30 = pVar9 + 1" identifier = (binary_expression "pVar9 + 1" identifier + number_literal)) , (binary_expression "SCARRY8(pVar9,1) ||\n            (n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))" (call_expression "SCARRY8(pVar9,1)" identifier (argument_list "(pVar9,1)" ( identifier , number_literal ))) || (parenthesized_expression "(n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10))" ( (comma_expression "n = lVar30 * 0x10, SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)" (assignment_expression "n = lVar30 * 0x10" identifier = (binary_expression "lVar30 * 0x10" identifier * number_literal)) , (binary_expression "SEXT816((long)n) != SEXT816(lVar30) * SEXT816(0x10)" (call_expression "SEXT816((long)n)" identifier (argument_list "((long)n)" ( (cast_expression "(long)n" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) != (binary_expression "SEXT816(lVar30) * SEXT816(0x10)" (call_expression "SEXT816(lVar30)" identifier (argument_list "(lVar30)" ( identifier ))) * (call_expression "SEXT816(0x10)" identifier (argument_list "(0x10)" ( number_literal )))))) )))) )) ))) )) (goto_statement "goto LAB_00114c1c;" goto statement_identifier ;)) (expression_statement "group.elems = (position *)xrealloc(group.elems,n);" (assignment_expression "group.elems = (position *)xrealloc(group.elems,n)" (field_expression "group.elems" identifier . field_identifier) = (cast_expression "(position *)xrealloc(group.elems,n)" ( (type_descriptor "position *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(group.elems,n)" identifier (argument_list "(group.elems,n)" ( (field_expression "group.elems" identifier . field_identifier) , identifier ))))) ;) (expression_statement "group.alloc = lVar30;" (assignment_expression "group.alloc = lVar30" (field_expression "group.alloc" identifier . field_identifier) = identifier) ;) })) (expression_statement "group.elems[group.nelem].index = sVar26;" (assignment_expression "group.elems[group.nelem].index = sVar26" (field_expression "group.elems[group.nelem].index" (subscript_expression "group.elems[group.nelem]" (field_expression "group.elems" identifier . field_identifier) [ (field_expression "group.nelem" identifier . field_identifier) ]) . field_identifier) = identifier) ;) (expression_statement "group.elems[group.nelem].constraint = (uint)uVar6;" (assignment_expression "group.elems[group.nelem].constraint = (uint)uVar6" (field_expression "group.elems[group.nelem].constraint" (subscript_expression "group.elems[group.nelem]" (field_expression "group.elems" identifier . field_identifier) [ (field_expression "group.nelem" identifier . field_identifier) ]) . field_identifier) = (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "group.nelem = group.nelem + 1;" (assignment_expression "group.nelem = group.nelem + 1" (field_expression "group.nelem" identifier . field_identifier) = (binary_expression "group.nelem + 1" (field_expression "group.nelem" identifier . field_identifier) + number_literal)) ;) (labeled_statement "LAB_0011435a:\n      lVar40 = lVar40 + 1;" statement_identifier : (expression_statement "lVar40 = lVar40 + 1;" (assignment_expression "lVar40 = lVar40 + 1" identifier = (binary_expression "lVar40 + 1" identifier + number_literal)) ;)) (expression_statement "ppVar15 = ppVar15 + 1;" (assignment_expression "ppVar15 = ppVar15 + 1" identifier = (binary_expression "ppVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar40 != lVar33)" ( (binary_expression "lVar40 != lVar33" identifier != identifier) )) ;) })) (labeled_statement "LAB_001144c5:\n  uVar14 = d->nleaves;" statement_identifier : (expression_statement "uVar14 = d->nleaves;" (assignment_expression "uVar14 = d->nleaves" identifier = (field_expression "d->nleaves" identifier -> field_identifier)) ;)) (if_statement "if ((long)(uVar14 << 4) < 0 || uVar14 >> 0x3c != 0) goto LAB_00114c1c;" if (parenthesized_expression "((long)(uVar14 << 4) < 0 || uVar14 >> 0x3c != 0)" ( (binary_expression "(long)(uVar14 << 4) < 0 || uVar14 >> 0x3c != 0" (binary_expression "(long)(uVar14 << 4) < 0" (cast_expression "(long)(uVar14 << 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar14 << 4)" ( (binary_expression "uVar14 << 4" identifier << number_literal) ))) < number_literal) || (binary_expression "uVar14 >> 0x3c != 0" (binary_expression "uVar14 >> 0x3c" identifier >> number_literal) != number_literal)) )) (goto_statement "goto LAB_00114c1c;" goto statement_identifier ;)) (expression_statement "tmp.elems = (position *)xmalloc(uVar14 << 4);" (assignment_expression "tmp.elems = (position *)xmalloc(uVar14 << 4)" (field_expression "tmp.elems" identifier . field_identifier) = (cast_expression "(position *)xmalloc(uVar14 << 4)" ( (type_descriptor "position *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(uVar14 << 4)" identifier (argument_list "(uVar14 << 4)" ( (binary_expression "uVar14 << 4" identifier << number_literal) ))))) ;) (expression_statement "tmp.nelem = 0;" (assignment_expression "tmp.nelem = 0" (field_expression "tmp.nelem" identifier . field_identifier) = number_literal) ;) (expression_statement "tmp.alloc = uVar14;" (assignment_expression "tmp.alloc = uVar14" (field_expression "tmp.alloc" identifier . field_identifier) = identifier) ;) (if_statement "if (group.nelem < 1) {\n    if (d->searchflag == false) {\n      sVar16 = -1;\n      sVar34 = -1;\n      sVar17 = sVar16;\n    }\n    else {\n      sVar34 = d->initstate_notbol;\n      sVar16 = 0;\n      sVar17 = (long)(d->min_trcount + L'\xffffffff');\n    }\n    goto LAB_001146d6;\n  }" if (parenthesized_expression "(group.nelem < 1)" ( (binary_expression "group.nelem < 1" (field_expression "group.nelem" identifier . field_identifier) < number_literal) )) (compound_statement "{\n    if (d->searchflag == false) {\n      sVar16 = -1;\n      sVar34 = -1;\n      sVar17 = sVar16;\n    }\n    else {\n      sVar34 = d->initstate_notbol;\n      sVar16 = 0;\n      sVar17 = (long)(d->min_trcount + L'\xffffffff');\n    }\n    goto LAB_001146d6;\n  }" { (if_statement "if (d->searchflag == false) {\n      sVar16 = -1;\n      sVar34 = -1;\n      sVar17 = sVar16;\n    }\n    else {\n      sVar34 = d->initstate_notbol;\n      sVar16 = 0;\n      sVar17 = (long)(d->min_trcount + L'\xffffffff');\n    }" if (parenthesized_expression "(d->searchflag == false)" ( (binary_expression "d->searchflag == false" (field_expression "d->searchflag" identifier -> field_identifier) == false) )) (compound_statement "{\n      sVar16 = -1;\n      sVar34 = -1;\n      sVar17 = sVar16;\n    }" { (expression_statement "sVar16 = -1;" (assignment_expression "sVar16 = -1" identifier = number_literal) ;) (expression_statement "sVar34 = -1;" (assignment_expression "sVar34 = -1" identifier = number_literal) ;) (expression_statement "sVar17 = sVar16;" (assignment_expression "sVar17 = sVar16" identifier = identifier) ;) }) (else_clause "else {\n      sVar34 = d->initstate_notbol;\n      sVar16 = 0;\n      sVar17 = (long)(d->min_trcount + L'\xffffffff');\n    }" else (compound_statement "{\n      sVar34 = d->initstate_notbol;\n      sVar16 = 0;\n      sVar17 = (long)(d->min_trcount + L'\xffffffff');\n    }" { (expression_statement "sVar34 = d->initstate_notbol;" (assignment_expression "sVar34 = d->initstate_notbol" identifier = (field_expression "d->initstate_notbol" identifier -> field_identifier)) ;) (expression_statement "sVar16 = 0;" (assignment_expression "sVar16 = 0" identifier = number_literal) ;) (expression_statement "sVar17 = (long)(d->min_trcount + L'\xffffffff');" (assignment_expression "sVar17 = (long)(d->min_trcount + L'\xffffffff')" identifier = (cast_expression "(long)(d->min_trcount + L'\xffffffff')" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(d->min_trcount + L'\xffffffff')" ( (binary_expression "d->min_trcount + L'\xffffffff'" (field_expression "d->min_trcount" identifier -> field_identifier) + (char_literal "L'\xffffffff'" L' escape_sequence character character character character ')) )))) ;) }))) (goto_statement "goto LAB_001146d6;" goto statement_identifier ;) })) (if_statement "if (d->searchflag != false) {\n    if ((d->localeinfo).multibyte != false) {\n      lVar33 = 0;\n      do {\n        lVar40 = lVar33 + 1;\n        if ((d->multibyte_prop[group.elems[lVar33].index] & 1U) == 0) goto LAB_00114536;\n        lVar33 = lVar40;\n      } while (lVar40 != group.nelem);\n    }\n    merge_constrained(&d->states->elems,(position_set *)&(d->states->elems).nelem,(uint)&group,\n                      (position_set *)&group.nelem,(position_set *)0xffffffff,&tmp);\n    copy((EVP_PKEY_CTX *)&tmp,(EVP_PKEY_CTX *)&tmp.nelem);\n  }" if (parenthesized_expression "(d->searchflag != false)" ( (binary_expression "d->searchflag != false" (field_expression "d->searchflag" identifier -> field_identifier) != false) )) (compound_statement "{\n    if ((d->localeinfo).multibyte != false) {\n      lVar33 = 0;\n      do {\n        lVar40 = lVar33 + 1;\n        if ((d->multibyte_prop[group.elems[lVar33].index] & 1U) == 0) goto LAB_00114536;\n        lVar33 = lVar40;\n      } while (lVar40 != group.nelem);\n    }\n    merge_constrained(&d->states->elems,(position_set *)&(d->states->elems).nelem,(uint)&group,\n                      (position_set *)&group.nelem,(position_set *)0xffffffff,&tmp);\n    copy((EVP_PKEY_CTX *)&tmp,(EVP_PKEY_CTX *)&tmp.nelem);\n  }" { (if_statement "if ((d->localeinfo).multibyte != false) {\n      lVar33 = 0;\n      do {\n        lVar40 = lVar33 + 1;\n        if ((d->multibyte_prop[group.elems[lVar33].index] & 1U) == 0) goto LAB_00114536;\n        lVar33 = lVar40;\n      } while (lVar40 != group.nelem);\n    }" if (parenthesized_expression "((d->localeinfo).multibyte != false)" ( (binary_expression "(d->localeinfo).multibyte != false" (field_expression "(d->localeinfo).multibyte" (parenthesized_expression "(d->localeinfo)" ( (field_expression "d->localeinfo" identifier -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\n      lVar33 = 0;\n      do {\n        lVar40 = lVar33 + 1;\n        if ((d->multibyte_prop[group.elems[lVar33].index] & 1U) == 0) goto LAB_00114536;\n        lVar33 = lVar40;\n      } while (lVar40 != group.nelem);\n    }" { (expression_statement "lVar33 = 0;" (assignment_expression "lVar33 = 0" identifier = number_literal) ;) (do_statement "do {\n        lVar40 = lVar33 + 1;\n        if ((d->multibyte_prop[group.elems[lVar33].index] & 1U) == 0) goto LAB_00114536;\n        lVar33 = lVar40;\n      } while (lVar40 != group.nelem);" do (compound_statement "{\n        lVar40 = lVar33 + 1;\n        if ((d->multibyte_prop[group.elems[lVar33].index] & 1U) == 0) goto LAB_00114536;\n        lVar33 = lVar40;\n      }" { (expression_statement "lVar40 = lVar33 + 1;" (assignment_expression "lVar40 = lVar33 + 1" identifier = (binary_expression "lVar33 + 1" identifier + number_literal)) ;) (if_statement "if ((d->multibyte_prop[group.elems[lVar33].index] & 1U) == 0) goto LAB_00114536;" if (parenthesized_expression "((d->multibyte_prop[group.elems[lVar33].index] & 1U) == 0)" ( (binary_expression "(d->multibyte_prop[group.elems[lVar33].index] & 1U) == 0" (parenthesized_expression "(d->multibyte_prop[group.elems[lVar33].index] & 1U)" ( (binary_expression "d->multibyte_prop[group.elems[lVar33].index] & 1U" (subscript_expression "d->multibyte_prop[group.elems[lVar33].index]" (field_expression "d->multibyte_prop" identifier -> field_identifier) [ (field_expression "group.elems[lVar33].index" (subscript_expression "group.elems[lVar33]" (field_expression "group.elems" identifier . field_identifier) [ identifier ]) . field_identifier) ]) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00114536;" goto statement_identifier ;)) (expression_statement "lVar33 = lVar40;" (assignment_expression "lVar33 = lVar40" identifier = identifier) ;) }) while (parenthesized_expression "(lVar40 != group.nelem)" ( (binary_expression "lVar40 != group.nelem" identifier != (field_expression "group.nelem" identifier . field_identifier)) )) ;) })) (expression_statement "merge_constrained(&d->states->elems,(position_set *)&(d->states->elems).nelem,(uint)&group,\n                      (position_set *)&group.nelem,(position_set *)0xffffffff,&tmp);" (call_expression "merge_constrained(&d->states->elems,(position_set *)&(d->states->elems).nelem,(uint)&group,\n                      (position_set *)&group.nelem,(position_set *)0xffffffff,&tmp)" identifier (argument_list "(&d->states->elems,(position_set *)&(d->states->elems).nelem,(uint)&group,\n                      (position_set *)&group.nelem,(position_set *)0xffffffff,&tmp)" ( (pointer_expression "&d->states->elems" & (field_expression "d->states->elems" (field_expression "d->states" identifier -> field_identifier) -> field_identifier)) , (cast_expression "(position_set *)&(d->states->elems).nelem" ( (type_descriptor "position_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(d->states->elems).nelem" & (field_expression "(d->states->elems).nelem" (parenthesized_expression "(d->states->elems)" ( (field_expression "d->states->elems" (field_expression "d->states" identifier -> field_identifier) -> field_identifier) )) . field_identifier))) , (binary_expression "(uint)&group" (parenthesized_expression "(uint)" ( identifier )) & identifier) , (cast_expression "(position_set *)&group.nelem" ( (type_descriptor "position_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&group.nelem" & (field_expression "group.nelem" identifier . field_identifier))) , (cast_expression "(position_set *)0xffffffff" ( (type_descriptor "position_set *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (pointer_expression "&tmp" & identifier) ))) ;) (expression_statement "copy((EVP_PKEY_CTX *)&tmp,(EVP_PKEY_CTX *)&tmp.nelem);" (call_expression "copy((EVP_PKEY_CTX *)&tmp,(EVP_PKEY_CTX *)&tmp.nelem)" identifier (argument_list "((EVP_PKEY_CTX *)&tmp,(EVP_PKEY_CTX *)&tmp.nelem)" ( (cast_expression "(EVP_PKEY_CTX *)&tmp" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&tmp" & identifier)) , (cast_expression "(EVP_PKEY_CTX *)&tmp.nelem" ( (type_descriptor "EVP_PKEY_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&tmp.nelem" & (field_expression "tmp.nelem" identifier . field_identifier))) ))) ;) })) (labeled_statement "LAB_00114536:\n  uVar14 = (d->syntax).newline.w[0];" statement_identifier : (expression_statement "uVar14 = (d->syntax).newline.w[0];" (assignment_expression "uVar14 = (d->syntax).newline.w[0]" identifier = (subscript_expression "(d->syntax).newline.w[0]" (field_expression "(d->syntax).newline.w" (field_expression "(d->syntax).newline" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) ;)) (expression_statement "uVar36 = (d->syntax).letters.w[0];" (assignment_expression "uVar36 = (d->syntax).letters.w[0]" identifier = (subscript_expression "(d->syntax).letters.w[0]" (field_expression "(d->syntax).letters.w" (field_expression "(d->syntax).letters" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) ;) (expression_statement "uVar27 = (uint)((label.w[0] & uVar14) != 0) << 2;" (assignment_expression "uVar27 = (uint)((label.w[0] & uVar14) != 0) << 2" identifier = (binary_expression "(uint)((label.w[0] & uVar14) != 0) << 2" (call_expression "(uint)((label.w[0] & uVar14) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((label.w[0] & uVar14) != 0)" ( (binary_expression "(label.w[0] & uVar14) != 0" (parenthesized_expression "(label.w[0] & uVar14)" ( (binary_expression "label.w[0] & uVar14" (subscript_expression "label.w[0]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) & identifier) )) != number_literal) ))) << number_literal)) ;) (if_statement "if ((label.w[0] & uVar36) != 0) {\n    uVar27 = uVar27 | 2;\n  }" if (parenthesized_expression "((label.w[0] & uVar36) != 0)" ( (binary_expression "(label.w[0] & uVar36) != 0" (parenthesized_expression "(label.w[0] & uVar36)" ( (binary_expression "label.w[0] & uVar36" (subscript_expression "label.w[0]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) & identifier) )) != number_literal) )) (compound_statement "{\n    uVar27 = uVar27 | 2;\n  }" { (expression_statement "uVar27 = uVar27 | 2;" (assignment_expression "uVar27 = uVar27 | 2" identifier = (binary_expression "uVar27 | 2" identifier | number_literal)) ;) })) (expression_statement "uVar38 = (d->syntax).newline.w[1];" (assignment_expression "uVar38 = (d->syntax).newline.w[1]" identifier = (subscript_expression "(d->syntax).newline.w[1]" (field_expression "(d->syntax).newline.w" (field_expression "(d->syntax).newline" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if ((~(uVar14 | uVar36) & label.w[0]) != 0) {\n    uVar27 = uVar27 | 1;\n  }" if (parenthesized_expression "((~(uVar14 | uVar36) & label.w[0]) != 0)" ( (binary_expression "(~(uVar14 | uVar36) & label.w[0]) != 0" (parenthesized_expression "(~(uVar14 | uVar36) & label.w[0])" ( (binary_expression "~(uVar14 | uVar36) & label.w[0]" (unary_expression "~(uVar14 | uVar36)" ~ (parenthesized_expression "(uVar14 | uVar36)" ( (binary_expression "uVar14 | uVar36" identifier | identifier) ))) & (subscript_expression "label.w[0]" (field_expression "label.w" identifier . field_identifier) [ number_literal ])) )) != number_literal) )) (compound_statement "{\n    uVar27 = uVar27 | 1;\n  }" { (expression_statement "uVar27 = uVar27 | 1;" (assignment_expression "uVar27 = uVar27 | 1" identifier = (binary_expression "uVar27 | 1" identifier | number_literal)) ;) })) (if_statement "if ((label.w[1] & uVar38) != 0) {\n    uVar27 = uVar27 | 4;\n  }" if (parenthesized_expression "((label.w[1] & uVar38) != 0)" ( (binary_expression "(label.w[1] & uVar38) != 0" (parenthesized_expression "(label.w[1] & uVar38)" ( (binary_expression "label.w[1] & uVar38" (subscript_expression "label.w[1]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) & identifier) )) != number_literal) )) (compound_statement "{\n    uVar27 = uVar27 | 4;\n  }" { (expression_statement "uVar27 = uVar27 | 4;" (assignment_expression "uVar27 = uVar27 | 4" identifier = (binary_expression "uVar27 | 4" identifier | number_literal)) ;) })) (expression_statement "uVar14 = (d->syntax).letters.w[1];" (assignment_expression "uVar14 = (d->syntax).letters.w[1]" identifier = (subscript_expression "(d->syntax).letters.w[1]" (field_expression "(d->syntax).letters.w" (field_expression "(d->syntax).letters" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if ((label.w[1] & uVar14) != 0) {\n    uVar27 = uVar27 | 2;\n  }" if (parenthesized_expression "((label.w[1] & uVar14) != 0)" ( (binary_expression "(label.w[1] & uVar14) != 0" (parenthesized_expression "(label.w[1] & uVar14)" ( (binary_expression "label.w[1] & uVar14" (subscript_expression "label.w[1]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) & identifier) )) != number_literal) )) (compound_statement "{\n    uVar27 = uVar27 | 2;\n  }" { (expression_statement "uVar27 = uVar27 | 2;" (assignment_expression "uVar27 = uVar27 | 2" identifier = (binary_expression "uVar27 | 2" identifier | number_literal)) ;) })) (expression_statement "uVar36 = CONCAT44(label.w[2]._4_4_,(uint)label.w[2]);" (assignment_expression "uVar36 = CONCAT44(label.w[2]._4_4_,(uint)label.w[2])" identifier = (call_expression "CONCAT44(label.w[2]._4_4_,(uint)label.w[2])" identifier (argument_list "(label.w[2]._4_4_,(uint)label.w[2])" ( (field_expression "label.w[2]._4_4_" (subscript_expression "label.w[2]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier) , (cast_expression "(uint)label.w[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "label.w[2]" (field_expression "label.w" identifier . field_identifier) [ number_literal ])) )))) ;) (if_statement "if ((~(uVar38 | uVar14) & label.w[1]) != 0) {\n    uVar27 = uVar27 | 1;\n  }" if (parenthesized_expression "((~(uVar38 | uVar14) & label.w[1]) != 0)" ( (binary_expression "(~(uVar38 | uVar14) & label.w[1]) != 0" (parenthesized_expression "(~(uVar38 | uVar14) & label.w[1])" ( (binary_expression "~(uVar38 | uVar14) & label.w[1]" (unary_expression "~(uVar38 | uVar14)" ~ (parenthesized_expression "(uVar38 | uVar14)" ( (binary_expression "uVar38 | uVar14" identifier | identifier) ))) & (subscript_expression "label.w[1]" (field_expression "label.w" identifier . field_identifier) [ number_literal ])) )) != number_literal) )) (compound_statement "{\n    uVar27 = uVar27 | 1;\n  }" { (expression_statement "uVar27 = uVar27 | 1;" (assignment_expression "uVar27 = uVar27 | 1" identifier = (binary_expression "uVar27 | 1" identifier | number_literal)) ;) })) (expression_statement "uVar14 = (d->syntax).newline.w[2];" (assignment_expression "uVar14 = (d->syntax).newline.w[2]" identifier = (subscript_expression "(d->syntax).newline.w[2]" (field_expression "(d->syntax).newline.w" (field_expression "(d->syntax).newline" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if ((uVar14 & uVar36) != 0) {\n    uVar27 = uVar27 | 4;\n  }" if (parenthesized_expression "((uVar14 & uVar36) != 0)" ( (binary_expression "(uVar14 & uVar36) != 0" (parenthesized_expression "(uVar14 & uVar36)" ( (binary_expression "uVar14 & uVar36" identifier & identifier) )) != number_literal) )) (compound_statement "{\n    uVar27 = uVar27 | 4;\n  }" { (expression_statement "uVar27 = uVar27 | 4;" (assignment_expression "uVar27 = uVar27 | 4" identifier = (binary_expression "uVar27 | 4" identifier | number_literal)) ;) })) (expression_statement "uVar38 = (d->syntax).letters.w[2];" (assignment_expression "uVar38 = (d->syntax).letters.w[2]" identifier = (subscript_expression "(d->syntax).letters.w[2]" (field_expression "(d->syntax).letters.w" (field_expression "(d->syntax).letters" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if ((uVar38 & uVar36) != 0) {\n    uVar27 = uVar27 | 2;\n  }" if (parenthesized_expression "((uVar38 & uVar36) != 0)" ( (binary_expression "(uVar38 & uVar36) != 0" (parenthesized_expression "(uVar38 & uVar36)" ( (binary_expression "uVar38 & uVar36" identifier & identifier) )) != number_literal) )) (compound_statement "{\n    uVar27 = uVar27 | 2;\n  }" { (expression_statement "uVar27 = uVar27 | 2;" (assignment_expression "uVar27 = uVar27 | 2" identifier = (binary_expression "uVar27 | 2" identifier | number_literal)) ;) })) (expression_statement "uVar7 = CONCAT44(label.w[3]._4_4_,(uint)label.w[3]);" (assignment_expression "uVar7 = CONCAT44(label.w[3]._4_4_,(uint)label.w[3])" identifier = (call_expression "CONCAT44(label.w[3]._4_4_,(uint)label.w[3])" identifier (argument_list "(label.w[3]._4_4_,(uint)label.w[3])" ( (field_expression "label.w[3]._4_4_" (subscript_expression "label.w[3]" (field_expression "label.w" identifier . field_identifier) [ number_literal ]) . field_identifier) , (cast_expression "(uint)label.w[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "label.w[3]" (field_expression "label.w" identifier . field_identifier) [ number_literal ])) )))) ;) (expression_statement "uVar12 = (d->syntax).newline.w[3];" (assignment_expression "uVar12 = (d->syntax).newline.w[3]" identifier = (subscript_expression "(d->syntax).newline.w[3]" (field_expression "(d->syntax).newline.w" (field_expression "(d->syntax).newline" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if ((~(uVar38 | uVar14) & uVar36) != 0) {\n    uVar27 = uVar27 | 1;\n  }" if (parenthesized_expression "((~(uVar38 | uVar14) & uVar36) != 0)" ( (binary_expression "(~(uVar38 | uVar14) & uVar36) != 0" (parenthesized_expression "(~(uVar38 | uVar14) & uVar36)" ( (binary_expression "~(uVar38 | uVar14) & uVar36" (unary_expression "~(uVar38 | uVar14)" ~ (parenthesized_expression "(uVar38 | uVar14)" ( (binary_expression "uVar38 | uVar14" identifier | identifier) ))) & identifier) )) != number_literal) )) (compound_statement "{\n    uVar27 = uVar27 | 1;\n  }" { (expression_statement "uVar27 = uVar27 | 1;" (assignment_expression "uVar27 = uVar27 | 1" identifier = (binary_expression "uVar27 | 1" identifier | number_literal)) ;) })) (if_statement "if ((uVar12 & uVar7) != 0) {\n    uVar27 = uVar27 | 4;\n  }" if (parenthesized_expression "((uVar12 & uVar7) != 0)" ( (binary_expression "(uVar12 & uVar7) != 0" (parenthesized_expression "(uVar12 & uVar7)" ( (binary_expression "uVar12 & uVar7" identifier & identifier) )) != number_literal) )) (compound_statement "{\n    uVar27 = uVar27 | 4;\n  }" { (expression_statement "uVar27 = uVar27 | 4;" (assignment_expression "uVar27 = uVar27 | 4" identifier = (binary_expression "uVar27 | 4" identifier | number_literal)) ;) })) (expression_statement "uVar14 = (d->syntax).letters.w[3];" (assignment_expression "uVar14 = (d->syntax).letters.w[3]" identifier = (subscript_expression "(d->syntax).letters.w[3]" (field_expression "(d->syntax).letters.w" (field_expression "(d->syntax).letters" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if ((uVar7 & uVar14) != 0) {\n    uVar27 = uVar27 | 2;\n  }" if (parenthesized_expression "((uVar7 & uVar14) != 0)" ( (binary_expression "(uVar7 & uVar14) != 0" (parenthesized_expression "(uVar7 & uVar14)" ( (binary_expression "uVar7 & uVar14" identifier & identifier) )) != number_literal) )) (compound_statement "{\n    uVar27 = uVar27 | 2;\n  }" { (expression_statement "uVar27 = uVar27 | 2;" (assignment_expression "uVar27 = uVar27 | 2" identifier = (binary_expression "uVar27 | 2" identifier | number_literal)) ;) })) (if_statement "if ((~(uVar12 | uVar14) & uVar7) == 0) {\n    if (group.nelem != 0) goto LAB_0011464f;\n    if (uVar27 != 0) goto LAB_00114c0f;\n    sVar16 = -1;\n    sVar17 = -1;\n    sVar34 = sVar16;\n  }\n  else {\n    uVar27 = uVar27 | 1;\n    if (group.nelem == 0) {\nLAB_00114c0f:\n      uVar39 = 0;\n      uVar23 = 0;\n      wVar25 = L'\a';\nLAB_00114bf3:\n      sVar34 = state_index(d,&group,wVar25);\n    }\n    else {\nLAB_0011464f:\n      uVar24 = 0;\n      ppVar15 = group.elems;\n      do {\n        psVar8 = &ppVar15->index;\n        ppVar15 = ppVar15 + 1;\n        uVar24 = uVar24 | d->separates[*psVar8];\n      } while (group.elems + group.nelem != ppVar15);\n      sVar34 = -1;\n      uVar39 = uVar24 & uVar27 & 2;\n      uVar23 = uVar24 & uVar27 & 4;\n      if ((~uVar24 & uVar27) != 0) {\n        wVar25 = uVar24 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    sVar16 = sVar34;\n    if (uVar23 != 0) {\n      sVar16 = state_index(d,&group,L'\x04');\n    }\n    sVar17 = sVar34;\n    if (uVar39 != 0) {\n      sVar17 = state_index(d,&group,L'\x02');\n    }\n  }" if (parenthesized_expression "((~(uVar12 | uVar14) & uVar7) == 0)" ( (binary_expression "(~(uVar12 | uVar14) & uVar7) == 0" (parenthesized_expression "(~(uVar12 | uVar14) & uVar7)" ( (binary_expression "~(uVar12 | uVar14) & uVar7" (unary_expression "~(uVar12 | uVar14)" ~ (parenthesized_expression "(uVar12 | uVar14)" ( (binary_expression "uVar12 | uVar14" identifier | identifier) ))) & identifier) )) == number_literal) )) (compound_statement "{\n    if (group.nelem != 0) goto LAB_0011464f;\n    if (uVar27 != 0) goto LAB_00114c0f;\n    sVar16 = -1;\n    sVar17 = -1;\n    sVar34 = sVar16;\n  }" { (if_statement "if (group.nelem != 0) goto LAB_0011464f;" if (parenthesized_expression "(group.nelem != 0)" ( (binary_expression "group.nelem != 0" (field_expression "group.nelem" identifier . field_identifier) != number_literal) )) (goto_statement "goto LAB_0011464f;" goto statement_identifier ;)) (if_statement "if (uVar27 != 0) goto LAB_00114c0f;" if (parenthesized_expression "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00114c0f;" goto statement_identifier ;)) (expression_statement "sVar16 = -1;" (assignment_expression "sVar16 = -1" identifier = number_literal) ;) (expression_statement "sVar17 = -1;" (assignment_expression "sVar17 = -1" identifier = number_literal) ;) (expression_statement "sVar34 = sVar16;" (assignment_expression "sVar34 = sVar16" identifier = identifier) ;) }) (else_clause "else {\n    uVar27 = uVar27 | 1;\n    if (group.nelem == 0) {\nLAB_00114c0f:\n      uVar39 = 0;\n      uVar23 = 0;\n      wVar25 = L'\a';\nLAB_00114bf3:\n      sVar34 = state_index(d,&group,wVar25);\n    }\n    else {\nLAB_0011464f:\n      uVar24 = 0;\n      ppVar15 = group.elems;\n      do {\n        psVar8 = &ppVar15->index;\n        ppVar15 = ppVar15 + 1;\n        uVar24 = uVar24 | d->separates[*psVar8];\n      } while (group.elems + group.nelem != ppVar15);\n      sVar34 = -1;\n      uVar39 = uVar24 & uVar27 & 2;\n      uVar23 = uVar24 & uVar27 & 4;\n      if ((~uVar24 & uVar27) != 0) {\n        wVar25 = uVar24 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    sVar16 = sVar34;\n    if (uVar23 != 0) {\n      sVar16 = state_index(d,&group,L'\x04');\n    }\n    sVar17 = sVar34;\n    if (uVar39 != 0) {\n      sVar17 = state_index(d,&group,L'\x02');\n    }\n  }" else (compound_statement "{\n    uVar27 = uVar27 | 1;\n    if (group.nelem == 0) {\nLAB_00114c0f:\n      uVar39 = 0;\n      uVar23 = 0;\n      wVar25 = L'\a';\nLAB_00114bf3:\n      sVar34 = state_index(d,&group,wVar25);\n    }\n    else {\nLAB_0011464f:\n      uVar24 = 0;\n      ppVar15 = group.elems;\n      do {\n        psVar8 = &ppVar15->index;\n        ppVar15 = ppVar15 + 1;\n        uVar24 = uVar24 | d->separates[*psVar8];\n      } while (group.elems + group.nelem != ppVar15);\n      sVar34 = -1;\n      uVar39 = uVar24 & uVar27 & 2;\n      uVar23 = uVar24 & uVar27 & 4;\n      if ((~uVar24 & uVar27) != 0) {\n        wVar25 = uVar24 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    sVar16 = sVar34;\n    if (uVar23 != 0) {\n      sVar16 = state_index(d,&group,L'\x04');\n    }\n    sVar17 = sVar34;\n    if (uVar39 != 0) {\n      sVar17 = state_index(d,&group,L'\x02');\n    }\n  }" { (expression_statement "uVar27 = uVar27 | 1;" (assignment_expression "uVar27 = uVar27 | 1" identifier = (binary_expression "uVar27 | 1" identifier | number_literal)) ;) (if_statement "if (group.nelem == 0) {\nLAB_00114c0f:\n      uVar39 = 0;\n      uVar23 = 0;\n      wVar25 = L'\a';\nLAB_00114bf3:\n      sVar34 = state_index(d,&group,wVar25);\n    }\n    else {\nLAB_0011464f:\n      uVar24 = 0;\n      ppVar15 = group.elems;\n      do {\n        psVar8 = &ppVar15->index;\n        ppVar15 = ppVar15 + 1;\n        uVar24 = uVar24 | d->separates[*psVar8];\n      } while (group.elems + group.nelem != ppVar15);\n      sVar34 = -1;\n      uVar39 = uVar24 & uVar27 & 2;\n      uVar23 = uVar24 & uVar27 & 4;\n      if ((~uVar24 & uVar27) != 0) {\n        wVar25 = uVar24 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }" if (parenthesized_expression "(group.nelem == 0)" ( (binary_expression "group.nelem == 0" (field_expression "group.nelem" identifier . field_identifier) == number_literal) )) (compound_statement "{\nLAB_00114c0f:\n      uVar39 = 0;\n      uVar23 = 0;\n      wVar25 = L'\a';\nLAB_00114bf3:\n      sVar34 = state_index(d,&group,wVar25);\n    }" { (labeled_statement "LAB_00114c0f:\n      uVar39 = 0;" statement_identifier : (expression_statement "uVar39 = 0;" (assignment_expression "uVar39 = 0" identifier = number_literal) ;)) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (expression_statement "wVar25 = L'\a';" (assignment_expression "wVar25 = L'\a'" identifier = (char_literal "L'\a'" L' escape_sequence ')) ;) (labeled_statement "LAB_00114bf3:\n      sVar34 = state_index(d,&group,wVar25);" statement_identifier : (expression_statement "sVar34 = state_index(d,&group,wVar25);" (assignment_expression "sVar34 = state_index(d,&group,wVar25)" identifier = (call_expression "state_index(d,&group,wVar25)" identifier (argument_list "(d,&group,wVar25)" ( identifier , (pointer_expression "&group" & identifier) , identifier )))) ;)) }) (else_clause "else {\nLAB_0011464f:\n      uVar24 = 0;\n      ppVar15 = group.elems;\n      do {\n        psVar8 = &ppVar15->index;\n        ppVar15 = ppVar15 + 1;\n        uVar24 = uVar24 | d->separates[*psVar8];\n      } while (group.elems + group.nelem != ppVar15);\n      sVar34 = -1;\n      uVar39 = uVar24 & uVar27 & 2;\n      uVar23 = uVar24 & uVar27 & 4;\n      if ((~uVar24 & uVar27) != 0) {\n        wVar25 = uVar24 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }" else (compound_statement "{\nLAB_0011464f:\n      uVar24 = 0;\n      ppVar15 = group.elems;\n      do {\n        psVar8 = &ppVar15->index;\n        ppVar15 = ppVar15 + 1;\n        uVar24 = uVar24 | d->separates[*psVar8];\n      } while (group.elems + group.nelem != ppVar15);\n      sVar34 = -1;\n      uVar39 = uVar24 & uVar27 & 2;\n      uVar23 = uVar24 & uVar27 & 4;\n      if ((~uVar24 & uVar27) != 0) {\n        wVar25 = uVar24 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }" { (labeled_statement "LAB_0011464f:\n      uVar24 = 0;" statement_identifier : (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;)) (expression_statement "ppVar15 = group.elems;" (assignment_expression "ppVar15 = group.elems" identifier = (field_expression "group.elems" identifier . field_identifier)) ;) (do_statement "do {\n        psVar8 = &ppVar15->index;\n        ppVar15 = ppVar15 + 1;\n        uVar24 = uVar24 | d->separates[*psVar8];\n      } while (group.elems + group.nelem != ppVar15);" do (compound_statement "{\n        psVar8 = &ppVar15->index;\n        ppVar15 = ppVar15 + 1;\n        uVar24 = uVar24 | d->separates[*psVar8];\n      }" { (expression_statement "psVar8 = &ppVar15->index;" (assignment_expression "psVar8 = &ppVar15->index" identifier = (pointer_expression "&ppVar15->index" & (field_expression "ppVar15->index" identifier -> field_identifier))) ;) (expression_statement "ppVar15 = ppVar15 + 1;" (assignment_expression "ppVar15 = ppVar15 + 1" identifier = (binary_expression "ppVar15 + 1" identifier + number_literal)) ;) (expression_statement "uVar24 = uVar24 | d->separates[*psVar8];" (assignment_expression "uVar24 = uVar24 | d->separates[*psVar8]" identifier = (binary_expression "uVar24 | d->separates[*psVar8]" identifier | (subscript_expression "d->separates[*psVar8]" (field_expression "d->separates" identifier -> field_identifier) [ (pointer_expression "*psVar8" * identifier) ]))) ;) }) while (parenthesized_expression "(group.elems + group.nelem != ppVar15)" ( (binary_expression "group.elems + group.nelem != ppVar15" (binary_expression "group.elems + group.nelem" (field_expression "group.elems" identifier . field_identifier) + (field_expression "group.nelem" identifier . field_identifier)) != identifier) )) ;) (expression_statement "sVar34 = -1;" (assignment_expression "sVar34 = -1" identifier = number_literal) ;) (expression_statement "uVar39 = uVar24 & uVar27 & 2;" (assignment_expression "uVar39 = uVar24 & uVar27 & 2" identifier = (binary_expression "uVar24 & uVar27 & 2" (binary_expression "uVar24 & uVar27" identifier & identifier) & number_literal)) ;) (expression_statement "uVar23 = uVar24 & uVar27 & 4;" (assignment_expression "uVar23 = uVar24 & uVar27 & 4" identifier = (binary_expression "uVar24 & uVar27 & 4" (binary_expression "uVar24 & uVar27" identifier & identifier) & number_literal)) ;) (if_statement "if ((~uVar24 & uVar27) != 0) {\n        wVar25 = uVar24 ^ 7;\n        goto LAB_00114bf3;\n      }" if (parenthesized_expression "((~uVar24 & uVar27) != 0)" ( (binary_expression "(~uVar24 & uVar27) != 0" (parenthesized_expression "(~uVar24 & uVar27)" ( (binary_expression "~uVar24 & uVar27" (unary_expression "~uVar24" ~ identifier) & identifier) )) != number_literal) )) (compound_statement "{\n        wVar25 = uVar24 ^ 7;\n        goto LAB_00114bf3;\n      }" { (expression_statement "wVar25 = uVar24 ^ 7;" (assignment_expression "wVar25 = uVar24 ^ 7" identifier = (binary_expression "uVar24 ^ 7" identifier ^ number_literal)) ;) (goto_statement "goto LAB_00114bf3;" goto statement_identifier ;) })) }))) (expression_statement "sVar16 = sVar34;" (assignment_expression "sVar16 = sVar34" identifier = identifier) ;) (if_statement "if (uVar23 != 0) {\n      sVar16 = state_index(d,&group,L'\x04');\n    }" if (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) )) (compound_statement "{\n      sVar16 = state_index(d,&group,L'\x04');\n    }" { (expression_statement "sVar16 = state_index(d,&group,L'\x04');" (assignment_expression "sVar16 = state_index(d,&group,L'\x04')" identifier = (call_expression "state_index(d,&group,L'\x04')" identifier (argument_list "(d,&group,L'\x04')" ( identifier , (pointer_expression "&group" & identifier) , (char_literal "L'\x04'" L' escape_sequence ') )))) ;) })) (expression_statement "sVar17 = sVar34;" (assignment_expression "sVar17 = sVar34" identifier = identifier) ;) (if_statement "if (uVar39 != 0) {\n      sVar17 = state_index(d,&group,L'\x02');\n    }" if (parenthesized_expression "(uVar39 != 0)" ( (binary_expression "uVar39 != 0" identifier != number_literal) )) (compound_statement "{\n      sVar17 = state_index(d,&group,L'\x02');\n    }" { (expression_statement "sVar17 = state_index(d,&group,L'\x02');" (assignment_expression "sVar17 = state_index(d,&group,L'\x02')" identifier = (call_expression "state_index(d,&group,L'\x02')" identifier (argument_list "(d,&group,L'\x02')" ( identifier , (pointer_expression "&group" & identifier) , (char_literal "L'\x02'" L' escape_sequence ') )))) ;) })) }))) (expression_statement "realloc_trans_if_necessary(d);" (call_expression "realloc_trans_if_necessary(d)" identifier (argument_list "(d)" ( identifier ))) ;) (labeled_statement "LAB_001146d6:\n  uVar14 = 0;" statement_identifier : (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;)) (do_statement "do {\n    while ((label.w[uVar14 >> 6 & 0x3ffffff] >> (uVar14 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar14 = uVar14 + 1;\n      if (uVar14 == 0x100) goto LAB_00114728;\n    }\n    cVar2 = (d->syntax).sbit[uVar14];\n    if (cVar2 != '\x02') {\n      sVar18 = sVar16;\n      if (cVar2 != '\x04') {\n        sVar18 = sVar34;\n      }\n      local_e0[uVar14] = sVar18;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar14] = sVar17;\n    uVar14 = uVar14 + 1;\n  } while (uVar14 != 0x100);" do (compound_statement "{\n    while ((label.w[uVar14 >> 6 & 0x3ffffff] >> (uVar14 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar14 = uVar14 + 1;\n      if (uVar14 == 0x100) goto LAB_00114728;\n    }\n    cVar2 = (d->syntax).sbit[uVar14];\n    if (cVar2 != '\x02') {\n      sVar18 = sVar16;\n      if (cVar2 != '\x04') {\n        sVar18 = sVar34;\n      }\n      local_e0[uVar14] = sVar18;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar14] = sVar17;\n    uVar14 = uVar14 + 1;\n  }" { (while_statement "while ((label.w[uVar14 >> 6 & 0x3ffffff] >> (uVar14 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar14 = uVar14 + 1;\n      if (uVar14 == 0x100) goto LAB_00114728;\n    }" while (parenthesized_expression "((label.w[uVar14 >> 6 & 0x3ffffff] >> (uVar14 & 0x3f) & 1) == 0)" ( (binary_expression "(label.w[uVar14 >> 6 & 0x3ffffff] >> (uVar14 & 0x3f) & 1) == 0" (parenthesized_expression "(label.w[uVar14 >> 6 & 0x3ffffff] >> (uVar14 & 0x3f) & 1)" ( (binary_expression "label.w[uVar14 >> 6 & 0x3ffffff] >> (uVar14 & 0x3f) & 1" (binary_expression "label.w[uVar14 >> 6 & 0x3ffffff] >> (uVar14 & 0x3f)" (subscript_expression "label.w[uVar14 >> 6 & 0x3ffffff]" (field_expression "label.w" identifier . field_identifier) [ (binary_expression "uVar14 >> 6 & 0x3ffffff" (binary_expression "uVar14 >> 6" identifier >> number_literal) & number_literal) ]) >> (parenthesized_expression "(uVar14 & 0x3f)" ( (binary_expression "uVar14 & 0x3f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_001146ed:\n      uVar14 = uVar14 + 1;\n      if (uVar14 == 0x100) goto LAB_00114728;\n    }" { (labeled_statement "LAB_001146ed:\n      uVar14 = uVar14 + 1;" statement_identifier : (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;)) (if_statement "if (uVar14 == 0x100) goto LAB_00114728;" if (parenthesized_expression "(uVar14 == 0x100)" ( (binary_expression "uVar14 == 0x100" identifier == number_literal) )) (goto_statement "goto LAB_00114728;" goto statement_identifier ;)) })) (expression_statement "cVar2 = (d->syntax).sbit[uVar14];" (assignment_expression "cVar2 = (d->syntax).sbit[uVar14]" identifier = (subscript_expression "(d->syntax).sbit[uVar14]" (field_expression "(d->syntax).sbit" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) [ identifier ])) ;) (if_statement "if (cVar2 != '\x02') {\n      sVar18 = sVar16;\n      if (cVar2 != '\x04') {\n        sVar18 = sVar34;\n      }\n      local_e0[uVar14] = sVar18;\n      goto LAB_001146ed;\n    }" if (parenthesized_expression "(cVar2 != '\x02')" ( (binary_expression "cVar2 != '\x02'" identifier != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      sVar18 = sVar16;\n      if (cVar2 != '\x04') {\n        sVar18 = sVar34;\n      }\n      local_e0[uVar14] = sVar18;\n      goto LAB_001146ed;\n    }" { (expression_statement "sVar18 = sVar16;" (assignment_expression "sVar18 = sVar16" identifier = identifier) ;) (if_statement "if (cVar2 != '\x04') {\n        sVar18 = sVar34;\n      }" if (parenthesized_expression "(cVar2 != '\x04')" ( (binary_expression "cVar2 != '\x04'" identifier != (char_literal "'\x04'" ' escape_sequence ')) )) (compound_statement "{\n        sVar18 = sVar34;\n      }" { (expression_statement "sVar18 = sVar34;" (assignment_expression "sVar18 = sVar34" identifier = identifier) ;) })) (expression_statement "local_e0[uVar14] = sVar18;" (assignment_expression "local_e0[uVar14] = sVar18" (subscript_expression "local_e0[uVar14]" identifier [ identifier ]) = identifier) ;) (goto_statement "goto LAB_001146ed;" goto statement_identifier ;) })) (expression_statement "local_e0[uVar14] = sVar17;" (assignment_expression "local_e0[uVar14] = sVar17" (subscript_expression "local_e0[uVar14]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar14 != 0x100)" ( (binary_expression "uVar14 != 0x100" identifier != number_literal) )) ;) (labeled_statement "LAB_00114728:\n  free(group.elems);" statement_identifier : (expression_statement "free(group.elems);" (call_expression "free(group.elems)" identifier (argument_list "(group.elems)" ( (field_expression "group.elems" identifier . field_identifier) ))) ;)) (expression_statement "free(p_00);" (call_expression "free(p_00)" identifier (argument_list "(p_00)" ( identifier ))) ;) (expression_statement "free(tmp.elems);" (call_expression "free(tmp.elems)" identifier (argument_list "(tmp.elems)" ( (field_expression "tmp.elems" identifier . field_identifier) ))) ;) (expression_statement "bVar22 = (d->syntax).eolbyte;" (assignment_expression "bVar22 = (d->syntax).eolbyte" identifier = (field_expression "(d->syntax).eolbyte" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((label.w[bVar22 >> 6] >> (bVar22 & 0x3f) & 1) != 0) {\n    d->newlines[s] = local_e0[bVar22];\n    local_e0[(d->syntax).eolbyte] = -1;\n  }" if (parenthesized_expression "((label.w[bVar22 >> 6] >> (bVar22 & 0x3f) & 1) != 0)" ( (binary_expression "(label.w[bVar22 >> 6] >> (bVar22 & 0x3f) & 1) != 0" (parenthesized_expression "(label.w[bVar22 >> 6] >> (bVar22 & 0x3f) & 1)" ( (binary_expression "label.w[bVar22 >> 6] >> (bVar22 & 0x3f) & 1" (binary_expression "label.w[bVar22 >> 6] >> (bVar22 & 0x3f)" (subscript_expression "label.w[bVar22 >> 6]" (field_expression "label.w" identifier . field_identifier) [ (binary_expression "bVar22 >> 6" identifier >> number_literal) ]) >> (parenthesized_expression "(bVar22 & 0x3f)" ( (binary_expression "bVar22 & 0x3f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n    d->newlines[s] = local_e0[bVar22];\n    local_e0[(d->syntax).eolbyte] = -1;\n  }" { (expression_statement "d->newlines[s] = local_e0[bVar22];" (assignment_expression "d->newlines[s] = local_e0[bVar22]" (subscript_expression "d->newlines[s]" (field_expression "d->newlines" identifier -> field_identifier) [ identifier ]) = (subscript_expression "local_e0[bVar22]" identifier [ identifier ])) ;) (expression_statement "local_e0[(d->syntax).eolbyte] = -1;" (assignment_expression "local_e0[(d->syntax).eolbyte] = -1" (subscript_expression "local_e0[(d->syntax).eolbyte]" identifier [ (field_expression "(d->syntax).eolbyte" (parenthesized_expression "(d->syntax)" ( (field_expression "d->syntax" identifier -> field_identifier) )) . field_identifier) ]) = number_literal) ;) })) (if_statement "if (lVar5 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(lVar5 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar5 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return local_e0[uc];" return (subscript_expression "local_e0[uc]" identifier [ identifier ]) ;) })))
(translation_unit "undefined8 FUN_00113e20(long param_1,long param_2,byte param_3)\n\n{\n  char cVar1;\n  byte bVar2;\n  ushort uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  long lVar7;\n  long lVar8;\n  byte *pbVar9;\n  ulong *__src;\n  ulong *puVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong uVar13;\n  undefined1 (*pauVar14) [16];\n  long *plVar15;\n  undefined8 uVar16;\n  undefined8 *puVar17;\n  byte bVar18;\n  uint uVar19;\n  ulong *puVar20;\n  long lVar21;\n  ulong uVar22;\n  uint uVar23;\n  int iVar24;\n  long lVar25;\n  long lVar26;\n  ulong uVar27;\n  long lVar28;\n  ulong uVar29;\n  ulong uVar30;\n  uint uVar31;\n  ulong uVar32;\n  uint uVar33;\n  long in_FS_OFFSET;\n  undefined1 auVar34 [16];\n  undefined1 auVar35 [16];\n  ulong local_100;\n  long local_f8;\n  undefined8 *local_e0;\n  long *local_c8;\n  long local_c0;\n  ulong local_b8;\n  void *local_a8;\n  undefined8 local_a0;\n  ulong local_98;\n  undefined1 local_88 [16];\n  undefined1 local_78 [16];\n  undefined1 local_68 [16];\n  undefined1 local_58 [16];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar7 = param_1 * 0x50;\n  lVar8 = *(long *)(param_2 + 0x3a0);\n  lVar21 = lVar8;\n  if (*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0) {\n    lVar21 = *(long *)(param_2 + 0x3a8);\n  }\n  plVar15 = (long *)(lVar21 + param_1 * 8);\n  local_e0 = (undefined8 *)*plVar15;\n  if (local_e0 == (undefined8 *)0x0) {\n    if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }\n    *(int *)(param_2 + 0x398) = iVar24;\n    local_e0 = (undefined8 *)FUN_00120ce0(0x800);\n    uVar5 = _UNK_00128298;\n    uVar4 = _DAT_00128290;\n    *plVar15 = (long)local_e0;\n    puVar17 = local_e0;\n    do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);\n  }\n  *(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1) = 0;\n  lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n  bVar18 = *(byte *)(lVar8 + 0x20);\n  uVar3 = *(ushort *)(lVar8 + 0x22);\n  uVar23 = (uint)uVar3;\n  if (((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);\n    *pbVar9 = *pbVar9 | 4;\n    lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar3 = *(ushort *)(lVar8 + 0x22);\n    uVar23 = (uint)uVar3;\n  }\n  if (((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 2;\n    lVar8 = lVar7 + *(long *)(param_2 + 0x358);\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar23 = (uint)*(ushort *)(lVar8 + 0x22);\n  }\n  if ((uVar23 & 7 & (uint)bVar18) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 1;\n  }\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) {\nLAB_00114c1c:\n                    \n    FUN_00120e70();\n  }\n  __src = (ulong *)FUN_00120ce0();\n  local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n  uVar22 = *(ulong *)(local_f8 + 0x10);\n  if (uVar22 == 0) {\n    lVar8 = 0;\n  }\n  else {\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) goto LAB_00114c1c;\n  local_c8 = (long *)FUN_00120ce0();\n  local_88._8_4_ = 0xffffffff;\n  local_88._0_8_ = 0xffffffffffffffff;\n  local_88._12_4_ = 0xffffffff;\n  local_c0 = 0;\n  local_78 = local_88;\n  local_b8 = uVar13;\n  if (lVar8 != 0) {\n    lVar21 = 0;\n    uVar23 = (uint)(param_3 >> 6);\n    uVar13 = 1L << (param_3 & 0x3f);\n    puVar10 = __src;\n    do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);\n  }\nLAB_001144c5:\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if ((long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0) goto LAB_00114c1c;\n  local_a8 = (void *)FUN_00120ce0();\n  local_a0 = 0;\n  local_98 = uVar13;\n  if (local_c0 < 1) {\n    if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }\n    goto LAB_001146d6;\n  }\n  if (*(char *)(param_2 + 0x378) != '\0') {\n    if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }\n    FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);\n    FUN_00111e00(&local_a8,&local_a0,&local_c8);\n  }\nLAB_00114536:\n  uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2;\n  if ((local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0) {\n    if (local_c0 != 0) goto LAB_0011464f;\n    if (uVar23 != 0) goto LAB_00114c0f;\n    lVar21 = -1;\n    lVar7 = -1;\n    lVar8 = lVar21;\n  }\n  else {\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }\n  FUN_00111ef0(param_2);\nLAB_001146d6:\n  uVar13 = 0;\n  do {\n    while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }\n    cVar1 = *(char *)(param_2 + 0xc + uVar13);\n    if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar13] = lVar7;\n    uVar13 = uVar13 + 1;\n  } while (uVar13 != 0x100);\nLAB_00114728:\n  free(local_c8);\n  free(__src);\n  free(local_a8);\n  bVar18 = *(byte *)(param_2 + 0xb);\n  if ((*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0) {\n    *(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];\n    local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return local_e0[param_3];\n}\n\n" (function_definition "undefined8 FUN_00113e20(long param_1,long param_2,byte param_3)\n\n{\n  char cVar1;\n  byte bVar2;\n  ushort uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  long lVar7;\n  long lVar8;\n  byte *pbVar9;\n  ulong *__src;\n  ulong *puVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong uVar13;\n  undefined1 (*pauVar14) [16];\n  long *plVar15;\n  undefined8 uVar16;\n  undefined8 *puVar17;\n  byte bVar18;\n  uint uVar19;\n  ulong *puVar20;\n  long lVar21;\n  ulong uVar22;\n  uint uVar23;\n  int iVar24;\n  long lVar25;\n  long lVar26;\n  ulong uVar27;\n  long lVar28;\n  ulong uVar29;\n  ulong uVar30;\n  uint uVar31;\n  ulong uVar32;\n  uint uVar33;\n  long in_FS_OFFSET;\n  undefined1 auVar34 [16];\n  undefined1 auVar35 [16];\n  ulong local_100;\n  long local_f8;\n  undefined8 *local_e0;\n  long *local_c8;\n  long local_c0;\n  ulong local_b8;\n  void *local_a8;\n  undefined8 local_a0;\n  ulong local_98;\n  undefined1 local_88 [16];\n  undefined1 local_78 [16];\n  undefined1 local_68 [16];\n  undefined1 local_58 [16];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar7 = param_1 * 0x50;\n  lVar8 = *(long *)(param_2 + 0x3a0);\n  lVar21 = lVar8;\n  if (*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0) {\n    lVar21 = *(long *)(param_2 + 0x3a8);\n  }\n  plVar15 = (long *)(lVar21 + param_1 * 8);\n  local_e0 = (undefined8 *)*plVar15;\n  if (local_e0 == (undefined8 *)0x0) {\n    if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }\n    *(int *)(param_2 + 0x398) = iVar24;\n    local_e0 = (undefined8 *)FUN_00120ce0(0x800);\n    uVar5 = _UNK_00128298;\n    uVar4 = _DAT_00128290;\n    *plVar15 = (long)local_e0;\n    puVar17 = local_e0;\n    do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);\n  }\n  *(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1) = 0;\n  lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n  bVar18 = *(byte *)(lVar8 + 0x20);\n  uVar3 = *(ushort *)(lVar8 + 0x22);\n  uVar23 = (uint)uVar3;\n  if (((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);\n    *pbVar9 = *pbVar9 | 4;\n    lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar3 = *(ushort *)(lVar8 + 0x22);\n    uVar23 = (uint)uVar3;\n  }\n  if (((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 2;\n    lVar8 = lVar7 + *(long *)(param_2 + 0x358);\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar23 = (uint)*(ushort *)(lVar8 + 0x22);\n  }\n  if ((uVar23 & 7 & (uint)bVar18) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 1;\n  }\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) {\nLAB_00114c1c:\n                    \n    FUN_00120e70();\n  }\n  __src = (ulong *)FUN_00120ce0();\n  local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n  uVar22 = *(ulong *)(local_f8 + 0x10);\n  if (uVar22 == 0) {\n    lVar8 = 0;\n  }\n  else {\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) goto LAB_00114c1c;\n  local_c8 = (long *)FUN_00120ce0();\n  local_88._8_4_ = 0xffffffff;\n  local_88._0_8_ = 0xffffffffffffffff;\n  local_88._12_4_ = 0xffffffff;\n  local_c0 = 0;\n  local_78 = local_88;\n  local_b8 = uVar13;\n  if (lVar8 != 0) {\n    lVar21 = 0;\n    uVar23 = (uint)(param_3 >> 6);\n    uVar13 = 1L << (param_3 & 0x3f);\n    puVar10 = __src;\n    do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);\n  }\nLAB_001144c5:\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if ((long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0) goto LAB_00114c1c;\n  local_a8 = (void *)FUN_00120ce0();\n  local_a0 = 0;\n  local_98 = uVar13;\n  if (local_c0 < 1) {\n    if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }\n    goto LAB_001146d6;\n  }\n  if (*(char *)(param_2 + 0x378) != '\0') {\n    if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }\n    FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);\n    FUN_00111e00(&local_a8,&local_a0,&local_c8);\n  }\nLAB_00114536:\n  uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2;\n  if ((local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0) {\n    if (local_c0 != 0) goto LAB_0011464f;\n    if (uVar23 != 0) goto LAB_00114c0f;\n    lVar21 = -1;\n    lVar7 = -1;\n    lVar8 = lVar21;\n  }\n  else {\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }\n  FUN_00111ef0(param_2);\nLAB_001146d6:\n  uVar13 = 0;\n  do {\n    while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }\n    cVar1 = *(char *)(param_2 + 0xc + uVar13);\n    if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar13] = lVar7;\n    uVar13 = uVar13 + 1;\n  } while (uVar13 != 0x100);\nLAB_00114728:\n  free(local_c8);\n  free(__src);\n  free(local_a8);\n  bVar18 = *(byte *)(param_2 + 0xb);\n  if ((*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0) {\n    *(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];\n    local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return local_e0[param_3];\n}" type_identifier (function_declarator "FUN_00113e20(long param_1,long param_2,byte param_3)" identifier (parameter_list "(long param_1,long param_2,byte param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "byte param_3" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  byte bVar2;\n  ushort uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  long lVar7;\n  long lVar8;\n  byte *pbVar9;\n  ulong *__src;\n  ulong *puVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong uVar13;\n  undefined1 (*pauVar14) [16];\n  long *plVar15;\n  undefined8 uVar16;\n  undefined8 *puVar17;\n  byte bVar18;\n  uint uVar19;\n  ulong *puVar20;\n  long lVar21;\n  ulong uVar22;\n  uint uVar23;\n  int iVar24;\n  long lVar25;\n  long lVar26;\n  ulong uVar27;\n  long lVar28;\n  ulong uVar29;\n  ulong uVar30;\n  uint uVar31;\n  ulong uVar32;\n  uint uVar33;\n  long in_FS_OFFSET;\n  undefined1 auVar34 [16];\n  undefined1 auVar35 [16];\n  ulong local_100;\n  long local_f8;\n  undefined8 *local_e0;\n  long *local_c8;\n  long local_c0;\n  ulong local_b8;\n  void *local_a8;\n  undefined8 local_a0;\n  ulong local_98;\n  undefined1 local_88 [16];\n  undefined1 local_78 [16];\n  undefined1 local_68 [16];\n  undefined1 local_58 [16];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar7 = param_1 * 0x50;\n  lVar8 = *(long *)(param_2 + 0x3a0);\n  lVar21 = lVar8;\n  if (*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0) {\n    lVar21 = *(long *)(param_2 + 0x3a8);\n  }\n  plVar15 = (long *)(lVar21 + param_1 * 8);\n  local_e0 = (undefined8 *)*plVar15;\n  if (local_e0 == (undefined8 *)0x0) {\n    if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }\n    *(int *)(param_2 + 0x398) = iVar24;\n    local_e0 = (undefined8 *)FUN_00120ce0(0x800);\n    uVar5 = _UNK_00128298;\n    uVar4 = _DAT_00128290;\n    *plVar15 = (long)local_e0;\n    puVar17 = local_e0;\n    do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);\n  }\n  *(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1) = 0;\n  lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n  bVar18 = *(byte *)(lVar8 + 0x20);\n  uVar3 = *(ushort *)(lVar8 + 0x22);\n  uVar23 = (uint)uVar3;\n  if (((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);\n    *pbVar9 = *pbVar9 | 4;\n    lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar3 = *(ushort *)(lVar8 + 0x22);\n    uVar23 = (uint)uVar3;\n  }\n  if (((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 2;\n    lVar8 = lVar7 + *(long *)(param_2 + 0x358);\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar23 = (uint)*(ushort *)(lVar8 + 0x22);\n  }\n  if ((uVar23 & 7 & (uint)bVar18) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 1;\n  }\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) {\nLAB_00114c1c:\n                    \n    FUN_00120e70();\n  }\n  __src = (ulong *)FUN_00120ce0();\n  local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n  uVar22 = *(ulong *)(local_f8 + 0x10);\n  if (uVar22 == 0) {\n    lVar8 = 0;\n  }\n  else {\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) goto LAB_00114c1c;\n  local_c8 = (long *)FUN_00120ce0();\n  local_88._8_4_ = 0xffffffff;\n  local_88._0_8_ = 0xffffffffffffffff;\n  local_88._12_4_ = 0xffffffff;\n  local_c0 = 0;\n  local_78 = local_88;\n  local_b8 = uVar13;\n  if (lVar8 != 0) {\n    lVar21 = 0;\n    uVar23 = (uint)(param_3 >> 6);\n    uVar13 = 1L << (param_3 & 0x3f);\n    puVar10 = __src;\n    do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);\n  }\nLAB_001144c5:\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if ((long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0) goto LAB_00114c1c;\n  local_a8 = (void *)FUN_00120ce0();\n  local_a0 = 0;\n  local_98 = uVar13;\n  if (local_c0 < 1) {\n    if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }\n    goto LAB_001146d6;\n  }\n  if (*(char *)(param_2 + 0x378) != '\0') {\n    if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }\n    FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);\n    FUN_00111e00(&local_a8,&local_a0,&local_c8);\n  }\nLAB_00114536:\n  uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2;\n  if ((local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0) {\n    if (local_c0 != 0) goto LAB_0011464f;\n    if (uVar23 != 0) goto LAB_00114c0f;\n    lVar21 = -1;\n    lVar7 = -1;\n    lVar8 = lVar21;\n  }\n  else {\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }\n  FUN_00111ef0(param_2);\nLAB_001146d6:\n  uVar13 = 0;\n  do {\n    while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }\n    cVar1 = *(char *)(param_2 + 0xc + uVar13);\n    if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar13] = lVar7;\n    uVar13 = uVar13 + 1;\n  } while (uVar13 != 0x100);\nLAB_00114728:\n  free(local_c8);\n  free(__src);\n  free(local_a8);\n  bVar18 = *(byte *)(param_2 + 0xb);\n  if ((*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0) {\n    *(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];\n    local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return local_e0[param_3];\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "ulong *__src;" type_identifier (pointer_declarator "*__src" * identifier) ;) (declaration "ulong *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "ulong uVar13;" type_identifier identifier ;) (expression_statement "undefined1 (*pauVar14) [16];" (subscript_expression "undefined1 (*pauVar14) [16]" (call_expression "undefined1 (*pauVar14)" identifier (argument_list "(*pauVar14)" ( (pointer_expression "*pauVar14" * identifier) ))) [ number_literal ]) ;) (declaration "long *plVar15;" (sized_type_specifier "long" long) (pointer_declarator "*plVar15" * identifier) ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "undefined8 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "byte bVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "ulong *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "long lVar21;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar22;" type_identifier identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "long lVar25;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar26;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar27;" type_identifier identifier ;) (declaration "long lVar28;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar29;" type_identifier identifier ;) (declaration "ulong uVar30;" type_identifier identifier ;) (declaration "uint uVar31;" type_identifier identifier ;) (declaration "ulong uVar32;" type_identifier identifier ;) (declaration "uint uVar33;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auVar34 [16];" type_identifier (array_declarator "auVar34 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 auVar35 [16];" type_identifier (array_declarator "auVar35 [16]" identifier [ number_literal ]) ;) (declaration "ulong local_100;" type_identifier identifier ;) (declaration "long local_f8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *local_e0;" type_identifier (pointer_declarator "*local_e0" * identifier) ;) (declaration "long *local_c8;" (sized_type_specifier "long" long) (pointer_declarator "*local_c8" * identifier) ;) (declaration "long local_c0;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong local_b8;" type_identifier identifier ;) (declaration "void *local_a8;" primitive_type (pointer_declarator "*local_a8" * identifier) ;) (declaration "undefined8 local_a0;" type_identifier identifier ;) (declaration "ulong local_98;" type_identifier identifier ;) (declaration "undefined1 local_88 [16];" type_identifier (array_declarator "local_88 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 local_78 [16];" type_identifier (array_declarator "local_78 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 local_68 [16];" type_identifier (array_declarator "local_68 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 local_58 [16];" type_identifier (array_declarator "local_58 [16]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "lVar7 = param_1 * 0x50;" (assignment_expression "lVar7 = param_1 * 0x50" identifier = (binary_expression "param_1 * 0x50" identifier * number_literal)) ;) (expression_statement "lVar8 = *(long *)(param_2 + 0x3a0);" (assignment_expression "lVar8 = *(long *)(param_2 + 0x3a0)" identifier = (pointer_expression "*(long *)(param_2 + 0x3a0)" * (cast_expression "(long *)(param_2 + 0x3a0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3a0)" ( (binary_expression "param_2 + 0x3a0" identifier + number_literal) ))))) ;) (expression_statement "lVar21 = lVar8;" (assignment_expression "lVar21 = lVar8" identifier = identifier) ;) (if_statement "if (*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0) {\n    lVar21 = *(long *)(param_2 + 0x3a8);\n  }" if (parenthesized_expression "(*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0)" ( (binary_expression "*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0" (pointer_expression "*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7)" * (cast_expression "(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x358) + 0x22 + lVar7)" ( (binary_expression "*(long *)(param_2 + 0x358) + 0x22 + lVar7" (binary_expression "*(long *)(param_2 + 0x358) + 0x22" (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))) + number_literal) + identifier) )))) != number_literal) )) (compound_statement "{\n    lVar21 = *(long *)(param_2 + 0x3a8);\n  }" { (expression_statement "lVar21 = *(long *)(param_2 + 0x3a8);" (assignment_expression "lVar21 = *(long *)(param_2 + 0x3a8)" identifier = (pointer_expression "*(long *)(param_2 + 0x3a8)" * (cast_expression "(long *)(param_2 + 0x3a8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3a8)" ( (binary_expression "param_2 + 0x3a8" identifier + number_literal) ))))) ;) })) (expression_statement "plVar15 = (long *)(lVar21 + param_1 * 8);" (assignment_expression "plVar15 = (long *)(lVar21 + param_1 * 8)" identifier = (cast_expression "(long *)(lVar21 + param_1 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + param_1 * 8)" ( (binary_expression "lVar21 + param_1 * 8" identifier + (binary_expression "param_1 * 8" identifier * number_literal)) )))) ;) (expression_statement "local_e0 = (undefined8 *)*plVar15;" (assignment_expression "local_e0 = (undefined8 *)*plVar15" identifier = (cast_expression "(undefined8 *)*plVar15" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar15" * identifier))) ;) (if_statement "if (local_e0 == (undefined8 *)0x0) {\n    if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }\n    *(int *)(param_2 + 0x398) = iVar24;\n    local_e0 = (undefined8 *)FUN_00120ce0(0x800);\n    uVar5 = _UNK_00128298;\n    uVar4 = _DAT_00128290;\n    *plVar15 = (long)local_e0;\n    puVar17 = local_e0;\n    do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);\n  }" if (parenthesized_expression "(local_e0 == (undefined8 *)0x0)" ( (binary_expression "local_e0 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }\n    *(int *)(param_2 + 0x398) = iVar24;\n    local_e0 = (undefined8 *)FUN_00120ce0(0x800);\n    uVar5 = _UNK_00128298;\n    uVar4 = _DAT_00128290;\n    *plVar15 = (long)local_e0;\n    puVar17 = local_e0;\n    do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);\n  }" { (if_statement "if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }" if (parenthesized_expression "(*(int *)(param_2 + 0x398) < 0x400)" ( (binary_expression "*(int *)(param_2 + 0x398) < 0x400" (pointer_expression "*(int *)(param_2 + 0x398)" * (cast_expression "(int *)(param_2 + 0x398)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x398)" ( (binary_expression "param_2 + 0x398" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }" { (expression_statement "iVar24 = *(int *)(param_2 + 0x398) + 1;" (assignment_expression "iVar24 = *(int *)(param_2 + 0x398) + 1" identifier = (binary_expression "*(int *)(param_2 + 0x398) + 1" (pointer_expression "*(int *)(param_2 + 0x398)" * (cast_expression "(int *)(param_2 + 0x398)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x398)" ( (binary_expression "param_2 + 0x398" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }" else (compound_statement "{\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }" { (expression_statement "lVar21 = (long)*(int *)(param_2 + 0x39c);" (assignment_expression "lVar21 = (long)*(int *)(param_2 + 0x39c)" identifier = (cast_expression "(long)*(int *)(param_2 + 0x39c)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(int *)(param_2 + 0x39c)" * (cast_expression "(int *)(param_2 + 0x39c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x39c)" ( (binary_expression "param_2 + 0x39c" identifier + number_literal) )))))) ;) (if_statement "if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }" if (parenthesized_expression "(lVar21 < *(long *)(param_2 + 0x390))" ( (binary_expression "lVar21 < *(long *)(param_2 + 0x390)" identifier < (pointer_expression "*(long *)(param_2 + 0x390)" * (cast_expression "(long *)(param_2 + 0x390)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x390)" ( (binary_expression "param_2 + 0x390" identifier + number_literal) ))))) )) (compound_statement "{\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }" { (do_statement "do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));" do (compound_statement "{\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        }" { (expression_statement "free(*(void **)(lVar8 + lVar21 * 8));" (call_expression "free(*(void **)(lVar8 + lVar21 * 8))" identifier (argument_list "(*(void **)(lVar8 + lVar21 * 8))" ( (pointer_expression "*(void **)(lVar8 + lVar21 * 8)" * (cast_expression "(void **)(lVar8 + lVar21 * 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + lVar21 * 8)" ( (binary_expression "lVar8 + lVar21 * 8" identifier + (binary_expression "lVar21 * 8" identifier * number_literal)) )))) ))) ;) (expression_statement "free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));" (call_expression "free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8))" identifier (argument_list "(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8))" ( (pointer_expression "*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" * (cast_expression "(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" ( (binary_expression "*(long *)(param_2 + 0x3a8) + lVar21 * 8" (pointer_expression "*(long *)(param_2 + 0x3a8)" * (cast_expression "(long *)(param_2 + 0x3a8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3a8)" ( (binary_expression "param_2 + 0x3a8" identifier + number_literal) )))) + (binary_expression "lVar21 * 8" identifier * number_literal)) )))) ))) ;) (expression_statement "*(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;" (assignment_expression "*(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0" (pointer_expression "*(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" * (cast_expression "(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" ( (binary_expression "*(long *)(param_2 + 0x3a8) + lVar21 * 8" (pointer_expression "*(long *)(param_2 + 0x3a8)" * (cast_expression "(long *)(param_2 + 0x3a8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3a8)" ( (binary_expression "param_2 + 0x3a8" identifier + number_literal) )))) + (binary_expression "lVar21 * 8" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "lVar8 = *(long *)(param_2 + 0x3a0);" (assignment_expression "lVar8 = *(long *)(param_2 + 0x3a0)" identifier = (pointer_expression "*(long *)(param_2 + 0x3a0)" * (cast_expression "(long *)(param_2 + 0x3a0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3a0)" ( (binary_expression "param_2 + 0x3a0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(lVar8 + lVar21 * 8) = 0;" (assignment_expression "*(undefined8 *)(lVar8 + lVar21 * 8) = 0" (pointer_expression "*(undefined8 *)(lVar8 + lVar21 * 8)" * (cast_expression "(undefined8 *)(lVar8 + lVar21 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + lVar21 * 8)" ( (binary_expression "lVar8 + lVar21 * 8" identifier + (binary_expression "lVar21 * 8" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "lVar21 = lVar21 + 1;" (assignment_expression "lVar21 = lVar21 + 1" identifier = (binary_expression "lVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar21 < *(long *)(param_2 + 0x390))" ( (binary_expression "lVar21 < *(long *)(param_2 + 0x390)" identifier < (pointer_expression "*(long *)(param_2 + 0x390)" * (cast_expression "(long *)(param_2 + 0x390)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x390)" ( (binary_expression "param_2 + 0x390" identifier + number_literal) ))))) )) ;) })) (expression_statement "iVar24 = 1;" (assignment_expression "iVar24 = 1" identifier = number_literal) ;) }))) (expression_statement "*(int *)(param_2 + 0x398) = iVar24;" (assignment_expression "*(int *)(param_2 + 0x398) = iVar24" (pointer_expression "*(int *)(param_2 + 0x398)" * (cast_expression "(int *)(param_2 + 0x398)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x398)" ( (binary_expression "param_2 + 0x398" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_e0 = (undefined8 *)FUN_00120ce0(0x800);" (assignment_expression "local_e0 = (undefined8 *)FUN_00120ce0(0x800)" identifier = (cast_expression "(undefined8 *)FUN_00120ce0(0x800)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00120ce0(0x800)" identifier (argument_list "(0x800)" ( number_literal ))))) ;) (expression_statement "uVar5 = _UNK_00128298;" (assignment_expression "uVar5 = _UNK_00128298" identifier = identifier) ;) (expression_statement "uVar4 = _DAT_00128290;" (assignment_expression "uVar4 = _DAT_00128290" identifier = identifier) ;) (expression_statement "*plVar15 = (long)local_e0;" (assignment_expression "*plVar15 = (long)local_e0" (pointer_expression "*plVar15" * identifier) = (cast_expression "(long)local_e0" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "puVar17 = local_e0;" (assignment_expression "puVar17 = local_e0" identifier = identifier) ;) (do_statement "do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);" do (compound_statement "{\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    }" { (expression_statement "*puVar17 = uVar4;" (assignment_expression "*puVar17 = uVar4" (pointer_expression "*puVar17" * identifier) = identifier) ;) (expression_statement "puVar17[1] = uVar5;" (assignment_expression "puVar17[1] = uVar5" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" identifier = (binary_expression "puVar17 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_e0 + 0x100 != puVar17)" ( (binary_expression "local_e0 + 0x100 != puVar17" (binary_expression "local_e0 + 0x100" identifier + number_literal) != identifier) )) ;) })) (expression_statement "*(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1) = 0;" (assignment_expression "*(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1) = 0" (pointer_expression "*(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1)" * (cast_expression "(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x3b0) + param_1)" ( (binary_expression "*(long *)(param_2 + 0x3b0) + param_1" (pointer_expression "*(long *)(param_2 + 0x3b0)" * (cast_expression "(long *)(param_2 + 0x3b0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3b0)" ( (binary_expression "param_2 + 0x3b0" identifier + number_literal) )))) + identifier) )))) = number_literal) ;) (expression_statement "lVar8 = *(long *)(param_2 + 0x358) + lVar7;" (assignment_expression "lVar8 = *(long *)(param_2 + 0x358) + lVar7" identifier = (binary_expression "*(long *)(param_2 + 0x358) + lVar7" (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))) + identifier)) ;) (expression_statement "bVar18 = *(byte *)(lVar8 + 0x20);" (assignment_expression "bVar18 = *(byte *)(lVar8 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar8 + 0x20)" * (cast_expression "(byte *)(lVar8 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x20)" ( (binary_expression "lVar8 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(ushort *)(lVar8 + 0x22);" (assignment_expression "uVar3 = *(ushort *)(lVar8 + 0x22)" identifier = (pointer_expression "*(ushort *)(lVar8 + 0x22)" * (cast_expression "(ushort *)(lVar8 + 0x22)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x22)" ( (binary_expression "lVar8 + 0x22" identifier + number_literal) ))))) ;) (expression_statement "uVar23 = (uint)uVar3;" (assignment_expression "uVar23 = (uint)uVar3" identifier = (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);\n    *pbVar9 = *pbVar9 | 4;\n    lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar3 = *(ushort *)(lVar8 + 0x22);\n    uVar23 = (uint)uVar3;\n  }" if (parenthesized_expression "(((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0)" ( (binary_expression "((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0" (parenthesized_expression "((int)uVar23 >> 6 & (uint)bVar18 & 7)" ( (binary_expression "(int)uVar23 >> 6 & (uint)bVar18 & 7" (binary_expression "(int)uVar23 >> 6 & (uint)bVar18" (binary_expression "(int)uVar23 >> 6" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) )) != number_literal) )) (compound_statement "{\n    pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);\n    *pbVar9 = *pbVar9 | 4;\n    lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar3 = *(ushort *)(lVar8 + 0x22);\n    uVar23 = (uint)uVar3;\n  }" { (expression_statement "pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);" (assignment_expression "pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1)" identifier = (cast_expression "(byte *)(*(long *)(param_2 + 0x3b0) + param_1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x3b0) + param_1)" ( (binary_expression "*(long *)(param_2 + 0x3b0) + param_1" (pointer_expression "*(long *)(param_2 + 0x3b0)" * (cast_expression "(long *)(param_2 + 0x3b0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3b0)" ( (binary_expression "param_2 + 0x3b0" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "*pbVar9 = *pbVar9 | 4;" (assignment_expression "*pbVar9 = *pbVar9 | 4" (pointer_expression "*pbVar9" * identifier) = (binary_expression "*pbVar9 | 4" (pointer_expression "*pbVar9" * identifier) | number_literal)) ;) (expression_statement "lVar8 = *(long *)(param_2 + 0x358) + lVar7;" (assignment_expression "lVar8 = *(long *)(param_2 + 0x358) + lVar7" identifier = (binary_expression "*(long *)(param_2 + 0x358) + lVar7" (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))) + identifier)) ;) (expression_statement "bVar18 = *(byte *)(lVar8 + 0x20);" (assignment_expression "bVar18 = *(byte *)(lVar8 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar8 + 0x20)" * (cast_expression "(byte *)(lVar8 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x20)" ( (binary_expression "lVar8 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(ushort *)(lVar8 + 0x22);" (assignment_expression "uVar3 = *(ushort *)(lVar8 + 0x22)" identifier = (pointer_expression "*(ushort *)(lVar8 + 0x22)" * (cast_expression "(ushort *)(lVar8 + 0x22)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x22)" ( (binary_expression "lVar8 + 0x22" identifier + number_literal) ))))) ;) (expression_statement "uVar23 = (uint)uVar3;" (assignment_expression "uVar23 = (uint)uVar3" identifier = (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (if_statement "if (((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 2;\n    lVar8 = lVar7 + *(long *)(param_2 + 0x358);\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar23 = (uint)*(ushort *)(lVar8 + 0x22);\n  }" if (parenthesized_expression "(((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0)" ( (binary_expression "((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0" (parenthesized_expression "((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7)" ( (binary_expression "(int)(uint)uVar3 >> 3 & (uint)bVar18 & 7" (binary_expression "(int)(uint)uVar3 >> 3 & (uint)bVar18" (binary_expression "(int)(uint)uVar3 >> 3" (cast_expression "(int)(uint)uVar3" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) >> number_literal) & (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) )) != number_literal) )) (compound_statement "{\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 2;\n    lVar8 = lVar7 + *(long *)(param_2 + 0x358);\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar23 = (uint)*(ushort *)(lVar8 + 0x22);\n  }" { (expression_statement "pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));" (assignment_expression "pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0))" identifier = (cast_expression "(byte *)(param_1 + *(long *)(param_2 + 0x3b0))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(long *)(param_2 + 0x3b0))" ( (binary_expression "param_1 + *(long *)(param_2 + 0x3b0)" identifier + (pointer_expression "*(long *)(param_2 + 0x3b0)" * (cast_expression "(long *)(param_2 + 0x3b0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3b0)" ( (binary_expression "param_2 + 0x3b0" identifier + number_literal) ))))) )))) ;) (expression_statement "*pbVar9 = *pbVar9 | 2;" (assignment_expression "*pbVar9 = *pbVar9 | 2" (pointer_expression "*pbVar9" * identifier) = (binary_expression "*pbVar9 | 2" (pointer_expression "*pbVar9" * identifier) | number_literal)) ;) (expression_statement "lVar8 = lVar7 + *(long *)(param_2 + 0x358);" (assignment_expression "lVar8 = lVar7 + *(long *)(param_2 + 0x358)" identifier = (binary_expression "lVar7 + *(long *)(param_2 + 0x358)" identifier + (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))))) ;) (expression_statement "bVar18 = *(byte *)(lVar8 + 0x20);" (assignment_expression "bVar18 = *(byte *)(lVar8 + 0x20)" identifier = (pointer_expression "*(byte *)(lVar8 + 0x20)" * (cast_expression "(byte *)(lVar8 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x20)" ( (binary_expression "lVar8 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar23 = (uint)*(ushort *)(lVar8 + 0x22);" (assignment_expression "uVar23 = (uint)*(ushort *)(lVar8 + 0x22)" identifier = (binary_expression "(uint)*(ushort *)(lVar8 + 0x22)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(lVar8 + 0x22)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x22)" ( (binary_expression "lVar8 + 0x22" identifier + number_literal) ))))) ;) })) (if_statement "if ((uVar23 & 7 & (uint)bVar18) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 1;\n  }" if (parenthesized_expression "((uVar23 & 7 & (uint)bVar18) != 0)" ( (binary_expression "(uVar23 & 7 & (uint)bVar18) != 0" (parenthesized_expression "(uVar23 & 7 & (uint)bVar18)" ( (binary_expression "uVar23 & 7 & (uint)bVar18" (binary_expression "uVar23 & 7" identifier & number_literal) & (cast_expression "(uint)bVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) )) != number_literal) )) (compound_statement "{\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 1;\n  }" { (expression_statement "pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));" (assignment_expression "pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0))" identifier = (cast_expression "(byte *)(param_1 + *(long *)(param_2 + 0x3b0))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + *(long *)(param_2 + 0x3b0))" ( (binary_expression "param_1 + *(long *)(param_2 + 0x3b0)" identifier + (pointer_expression "*(long *)(param_2 + 0x3b0)" * (cast_expression "(long *)(param_2 + 0x3b0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3b0)" ( (binary_expression "param_2 + 0x3b0" identifier + number_literal) ))))) )))) ;) (expression_statement "*pbVar9 = *pbVar9 | 1;" (assignment_expression "*pbVar9 = *pbVar9 | 1" (pointer_expression "*pbVar9" * identifier) = (binary_expression "*pbVar9 | 1" (pointer_expression "*pbVar9" * identifier) | number_literal)) ;) })) (expression_statement "uVar13 = *(ulong *)(param_2 + 0x300);" (assignment_expression "uVar13 = *(ulong *)(param_2 + 0x300)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x300)" * (cast_expression "(ulong *)(param_2 + 0x300)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x300)" ( (binary_expression "param_2 + 0x300" identifier + number_literal) ))))) ;) (if_statement "if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) {\nLAB_00114c1c:\n                    \n    FUN_00120e70();\n  }" if (parenthesized_expression "(((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0))" ( (binary_expression "((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)" (parenthesized_expression "((long)(uVar13 << 4) < 0)" ( (binary_expression "(long)(uVar13 << 4) < 0" (cast_expression "(long)(uVar13 << 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar13 << 4)" ( (binary_expression "uVar13 << 4" identifier << number_literal) ))) < number_literal) )) || (parenthesized_expression "(uVar13 >> 0x3c != 0)" ( (binary_expression "uVar13 >> 0x3c != 0" (binary_expression "uVar13 >> 0x3c" identifier >> number_literal) != number_literal) ))) )) (compound_statement "{\nLAB_00114c1c:\n                    \n    FUN_00120e70();\n  }" { (labeled_statement "LAB_00114c1c:\n                    \n    FUN_00120e70();" statement_identifier : (expression_statement "FUN_00120e70();" (call_expression "FUN_00120e70()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "__src = (ulong *)FUN_00120ce0();" (assignment_expression "__src = (ulong *)FUN_00120ce0()" identifier = (cast_expression "(ulong *)FUN_00120ce0()" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00120ce0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_f8 = lVar7 + *(long *)(param_2 + 0x358);" (assignment_expression "local_f8 = lVar7 + *(long *)(param_2 + 0x358)" identifier = (binary_expression "lVar7 + *(long *)(param_2 + 0x358)" identifier + (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))))) ;) (expression_statement "uVar22 = *(ulong *)(local_f8 + 0x10);" (assignment_expression "uVar22 = *(ulong *)(local_f8 + 0x10)" identifier = (pointer_expression "*(ulong *)(local_f8 + 0x10)" * (cast_expression "(ulong *)(local_f8 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_f8 + 0x10)" ( (binary_expression "local_f8 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (uVar22 == 0) {\n    lVar8 = 0;\n  }\n  else {\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }" if (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) (compound_statement "{\n    lVar8 = 0;\n  }" { (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }" else (compound_statement "{\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }" { (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (expression_statement "lVar26 = *(long *)(local_f8 + 8);" (assignment_expression "lVar26 = *(long *)(local_f8 + 8)" identifier = (pointer_expression "*(long *)(local_f8 + 8)" * (cast_expression "(long *)(local_f8 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_f8 + 8)" ( (binary_expression "local_f8 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (expression_statement "lVar21 = *(long *)(param_2 + 0x370);" (assignment_expression "lVar21 = *(long *)(param_2 + 0x370)" identifier = (pointer_expression "*(long *)(param_2 + 0x370)" * (cast_expression "(long *)(param_2 + 0x370)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x370)" ( (binary_expression "param_2 + 0x370" identifier + number_literal) ))))) ;) (do_statement "do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);" do (compound_statement "{\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    }" { (expression_statement "uVar32 = 0;" (assignment_expression "uVar32 = 0" identifier = number_literal) ;) (expression_statement "plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);" (assignment_expression "plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" identifier = (cast_expression "(long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" ( (binary_expression "lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18" identifier + (binary_expression "*(long *)(lVar26 + local_100 * 0x10) * 0x18" (pointer_expression "*(long *)(lVar26 + local_100 * 0x10)" * (cast_expression "(long *)(lVar26 + local_100 * 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar26 + local_100 * 0x10)" ( (binary_expression "lVar26 + local_100 * 0x10" identifier + (binary_expression "local_100 * 0x10" identifier * number_literal)) )))) * number_literal)) )))) ;) (if_statement "if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }" if (parenthesized_expression "(plVar15[1] != 0)" ( (binary_expression "plVar15[1] != 0" (subscript_expression "plVar15[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }" { (do_statement "do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);" do (compound_statement "{\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        }" { (expression_statement "puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);" (assignment_expression "puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15)" identifier = (cast_expression "(ulong *)(uVar32 * 0x10 + *plVar15)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar32 * 0x10 + *plVar15)" ( (binary_expression "uVar32 * 0x10 + *plVar15" (binary_expression "uVar32 * 0x10" identifier * number_literal) + (pointer_expression "*plVar15" * identifier)) )))) ;) (expression_statement "uVar22 = *puVar10;" (assignment_expression "uVar22 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "uVar23 = (uint)puVar10[1];" (assignment_expression "uVar23 = (uint)puVar10[1]" identifier = (cast_expression "(uint)puVar10[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar10[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar10 = __src;" (assignment_expression "puVar10 = __src" identifier = identifier) ;) (if_statement "if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }" { (if_statement "if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }" if (parenthesized_expression "((long)uVar13 < 1)" ( (binary_expression "(long)uVar13 < 1" (cast_expression "(long)uVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n              lVar25 = 0;\n              goto LAB_00114026;\n            }" { (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00114026;" goto statement_identifier ;) })) }) (else_clause "else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }" else (compound_statement "{\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }" { (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" identifier = number_literal) ;) (expression_statement "lVar28 = lVar8;" (assignment_expression "lVar28 = lVar8" identifier = identifier) ;) (do_statement "do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);" do (compound_statement "{\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            }" { (while_statement "while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }" { (expression_statement "lVar11 = lVar28 + lVar25 >> 1;" (assignment_expression "lVar11 = lVar28 + lVar25 >> 1" identifier = (binary_expression "lVar28 + lVar25 >> 1" (binary_expression "lVar28 + lVar25" identifier + identifier) >> number_literal)) ;) (expression_statement "puVar20 = __src + lVar11 * 2;" (assignment_expression "puVar20 = __src + lVar11 * 2" identifier = (binary_expression "__src + lVar11 * 2" identifier + (binary_expression "lVar11 * 2" identifier * number_literal))) ;) (expression_statement "uVar12 = *puVar20;" (assignment_expression "uVar12 = *puVar20" identifier = (pointer_expression "*puVar20" * identifier)) ;) (if_statement "if (uVar12 <= uVar22 && uVar22 != uVar12) break;" if (parenthesized_expression "(uVar12 <= uVar22 && uVar22 != uVar12)" ( (binary_expression "uVar12 <= uVar22 && uVar22 != uVar12" (binary_expression "uVar12 <= uVar22" identifier <= identifier) && (binary_expression "uVar22 != uVar12" identifier != identifier)) )) (break_statement "break;" break ;)) (if_statement "if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }" if (parenthesized_expression "(uVar22 == uVar12)" ( (binary_expression "uVar22 == uVar12" identifier == identifier) )) (compound_statement "{\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }" { (expression_statement "*(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;" (assignment_expression "*(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23" (pointer_expression "*(uint *)(puVar20 + 1)" * (cast_expression "(uint *)(puVar20 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 1)" ( (binary_expression "puVar20 + 1" identifier + number_literal) )))) = (binary_expression "(uint)puVar20[1] | uVar23" (cast_expression "(uint)puVar20[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar20[1]" identifier [ number_literal ])) | identifier)) ;) (goto_statement "goto LAB_00114119;" goto statement_identifier ;) })) (expression_statement "lVar28 = lVar11;" (assignment_expression "lVar28 = lVar11" identifier = identifier) ;) (if_statement "if (lVar11 <= lVar25) goto LAB_0011401d;" if (parenthesized_expression "(lVar11 <= lVar25)" ( (binary_expression "lVar11 <= lVar25" identifier <= identifier) )) (goto_statement "goto LAB_0011401d;" goto statement_identifier ;)) })) (expression_statement "lVar25 = lVar11 + 1;" (assignment_expression "lVar25 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar25 < lVar28)" ( (binary_expression "lVar25 < lVar28" identifier < identifier) )) ;) (labeled_statement "LAB_0011401d:\n            uVar12 = uVar13;" statement_identifier : (expression_statement "uVar12 = uVar13;" (assignment_expression "uVar12 = uVar13" identifier = identifier) ;)) (if_statement "if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }" if (parenthesized_expression "((long)uVar13 <= lVar8)" ( (binary_expression "(long)uVar13 <= lVar8" (cast_expression "(long)uVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) <= identifier) )) (compound_statement "{\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }" { (labeled_statement "LAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;" statement_identifier : (expression_statement "uVar12 = ((long)uVar13 >> 1) + uVar13;" (assignment_expression "uVar12 = ((long)uVar13 >> 1) + uVar13" identifier = (binary_expression "((long)uVar13 >> 1) + uVar13" (parenthesized_expression "((long)uVar13 >> 1)" ( (binary_expression "(long)uVar13 >> 1" (cast_expression "(long)uVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )) + identifier)) ;)) (if_statement "if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }" if (parenthesized_expression "((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))" ( (binary_expression "(SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))" (parenthesized_expression "(SCARRY8((long)uVar13 >> 1,uVar13))" ( (call_expression "SCARRY8((long)uVar13 >> 1,uVar13)" identifier (argument_list "((long)uVar13 >> 1,uVar13)" ( (binary_expression "(long)uVar13 >> 1" (cast_expression "(long)uVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) , identifier ))) )) || (parenthesized_expression "(lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))" ( (comma_expression "lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)" (assignment_expression "lVar21 = uVar12 * 0x10" identifier = (binary_expression "uVar12 * 0x10" identifier * number_literal)) , (binary_expression "SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816(lVar21)" identifier (argument_list "(lVar21)" ( identifier ))) != (binary_expression "SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816((long)uVar12)" identifier (argument_list "((long)uVar12)" ( (cast_expression "(long)uVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) * (call_expression "SEXT816(0x10)" identifier (argument_list "(0x10)" ( number_literal )))))) ))) )) (compound_statement "{\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }" { (expression_statement "lVar21 = 0x7ffffffffffffff0;" (assignment_expression "lVar21 = 0x7ffffffffffffff0" identifier = number_literal) ;) (expression_statement "uVar12 = 0x7ffffffffffffff;" (assignment_expression "uVar12 = 0x7ffffffffffffff" identifier = number_literal) ;) }) (else_clause "else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }" else (if_statement "if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }" if (parenthesized_expression "(lVar21 < 0x80)" ( (binary_expression "lVar21 < 0x80" identifier < number_literal) )) (compound_statement "{\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }" { (expression_statement "uVar12 = 8;" (assignment_expression "uVar12 = 8" identifier = number_literal) ;) (expression_statement "lVar21 = 0x80;" (assignment_expression "lVar21 = 0x80" identifier = number_literal) ;) })))) (if_statement "if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;" if (parenthesized_expression "(((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  )))" ( (binary_expression "((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))" (parenthesized_expression "((long)(uVar12 - uVar13) < 1)" ( (binary_expression "(long)(uVar12 - uVar13) < 1" (cast_expression "(long)(uVar12 - uVar13)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar12 - uVar13)" ( (binary_expression "uVar12 - uVar13" identifier - identifier) ))) < number_literal) )) && (parenthesized_expression "((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))" ( (parenthesized_expression "(uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  )" ( (comma_expression "uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))" (assignment_expression "uVar12 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) , (binary_expression "SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))" (call_expression "SCARRY8(uVar13,1)" identifier (argument_list "(uVar13,1)" ( identifier , number_literal ))) || (parenthesized_expression "(lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))" ( (comma_expression "lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)" (assignment_expression "lVar21 = uVar12 * 0x10" identifier = (binary_expression "uVar12 * 0x10" identifier * number_literal)) , (binary_expression "SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816(lVar21)" identifier (argument_list "(lVar21)" ( identifier ))) != (binary_expression "SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816((long)uVar12)" identifier (argument_list "((long)uVar12)" ( (cast_expression "(long)uVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) * (call_expression "SEXT816(0x10)" identifier (argument_list "(0x10)" ( number_literal )))))) )))) )) ))) )) (goto_statement "goto LAB_00114c1c;" goto statement_identifier ;)) (expression_statement "puVar10 = (ulong *)FUN_00120d00(__src,lVar21);" (assignment_expression "puVar10 = (ulong *)FUN_00120d00(__src,lVar21)" identifier = (cast_expression "(ulong *)FUN_00120d00(__src,lVar21)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00120d00(__src,lVar21)" identifier (argument_list "(__src,lVar21)" ( identifier , identifier ))))) ;) (expression_statement "lVar21 = *(long *)(param_2 + 0x370);" (assignment_expression "lVar21 = *(long *)(param_2 + 0x370)" identifier = (pointer_expression "*(long *)(param_2 + 0x370)" * (cast_expression "(long *)(param_2 + 0x370)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x370)" ( (binary_expression "param_2 + 0x370" identifier + number_literal) ))))) ;) (expression_statement "local_f8 = lVar7 + *(long *)(param_2 + 0x358);" (assignment_expression "local_f8 = lVar7 + *(long *)(param_2 + 0x358)" identifier = (binary_expression "lVar7 + *(long *)(param_2 + 0x358)" identifier + (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))))) ;) (expression_statement "lVar26 = *(long *)(local_f8 + 8);" (assignment_expression "lVar26 = *(long *)(local_f8 + 8)" identifier = (pointer_expression "*(long *)(local_f8 + 8)" * (cast_expression "(long *)(local_f8 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_f8 + 8)" ( (binary_expression "local_f8 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "__src = puVar10 + lVar25 * 2;" (assignment_expression "__src = puVar10 + lVar25 * 2" identifier = (binary_expression "puVar10 + lVar25 * 2" identifier + (binary_expression "lVar25 * 2" identifier * number_literal))) ;) (expression_statement "uVar13 = uVar12;" (assignment_expression "uVar13 = uVar12" identifier = identifier) ;) (if_statement "if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }" if (parenthesized_expression "(lVar25 < lVar8)" ( (binary_expression "lVar25 < lVar8" identifier < identifier) )) (compound_statement "{\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }" { (expression_statement "memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);" (call_expression "memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10)" identifier (argument_list "(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10)" ( (binary_expression "puVar10 + lVar25 * 2 + 2" (binary_expression "puVar10 + lVar25 * 2" identifier + (binary_expression "lVar25 * 2" identifier * number_literal)) + number_literal) , identifier , (binary_expression "(lVar8 - lVar25) * 0x10" (parenthesized_expression "(lVar8 - lVar25)" ( (binary_expression "lVar8 - lVar25" identifier - identifier) )) * number_literal) ))) ;) })) }))) (expression_statement "*__src = uVar22;" (assignment_expression "*__src = uVar22" (pointer_expression "*__src" * identifier) = identifier) ;) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) (expression_statement "*(uint *)(__src + 1) = uVar23;" (assignment_expression "*(uint *)(__src + 1) = uVar23" (pointer_expression "*(uint *)(__src + 1)" * (cast_expression "(uint *)(__src + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__src + 1)" ( (binary_expression "__src + 1" identifier + number_literal) )))) = identifier) ;) (expression_statement "__src = puVar10;" (assignment_expression "__src = puVar10" identifier = identifier) ;) (labeled_statement "LAB_00114119:\n          uVar32 = uVar32 + 1;" statement_identifier : (expression_statement "uVar32 = uVar32 + 1;" (assignment_expression "uVar32 = uVar32 + 1" identifier = (binary_expression "uVar32 + 1" identifier + number_literal)) ;)) (expression_statement "plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);" (assignment_expression "plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" identifier = (cast_expression "(long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" ( (binary_expression "lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18" identifier + (binary_expression "*(long *)(lVar26 + local_100 * 0x10) * 0x18" (pointer_expression "*(long *)(lVar26 + local_100 * 0x10)" * (cast_expression "(long *)(lVar26 + local_100 * 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar26 + local_100 * 0x10)" ( (binary_expression "lVar26 + local_100 * 0x10" identifier + (binary_expression "local_100 * 0x10" identifier * number_literal)) )))) * number_literal)) )))) ;) }) while (parenthesized_expression "(uVar32 < (ulong)plVar15[1])" ( (binary_expression "uVar32 < (ulong)plVar15[1]" identifier < (cast_expression "(ulong)plVar15[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "plVar15[1]" identifier [ number_literal ]))) )) ;) (expression_statement "uVar22 = *(ulong *)(local_f8 + 0x10);" (assignment_expression "uVar22 = *(ulong *)(local_f8 + 0x10)" identifier = (pointer_expression "*(ulong *)(local_f8 + 0x10)" * (cast_expression "(ulong *)(local_f8 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_f8 + 0x10)" ( (binary_expression "local_f8 + 0x10" identifier + number_literal) ))))) ;) })) (expression_statement "local_100 = local_100 + 1;" (assignment_expression "local_100 = local_100 + 1" identifier = (binary_expression "local_100 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_100 < uVar22)" ( (binary_expression "local_100 < uVar22" identifier < identifier) )) ;) }))) (expression_statement "uVar13 = *(ulong *)(param_2 + 0x300);" (assignment_expression "uVar13 = *(ulong *)(param_2 + 0x300)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x300)" * (cast_expression "(ulong *)(param_2 + 0x300)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x300)" ( (binary_expression "param_2 + 0x300" identifier + number_literal) ))))) ;) (if_statement "if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) goto LAB_00114c1c;" if (parenthesized_expression "(((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0))" ( (binary_expression "((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)" (parenthesized_expression "((long)(uVar13 << 4) < 0)" ( (binary_expression "(long)(uVar13 << 4) < 0" (cast_expression "(long)(uVar13 << 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar13 << 4)" ( (binary_expression "uVar13 << 4" identifier << number_literal) ))) < number_literal) )) || (parenthesized_expression "(uVar13 >> 0x3c != 0)" ( (binary_expression "uVar13 >> 0x3c != 0" (binary_expression "uVar13 >> 0x3c" identifier >> number_literal) != number_literal) ))) )) (goto_statement "goto LAB_00114c1c;" goto statement_identifier ;)) (expression_statement "local_c8 = (long *)FUN_00120ce0();" (assignment_expression "local_c8 = (long *)FUN_00120ce0()" identifier = (cast_expression "(long *)FUN_00120ce0()" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00120ce0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_88._8_4_ = 0xffffffff;" (assignment_expression "local_88._8_4_ = 0xffffffff" (field_expression "local_88._8_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "local_88._0_8_ = 0xffffffffffffffff;" (assignment_expression "local_88._0_8_ = 0xffffffffffffffff" (field_expression "local_88._0_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "local_88._12_4_ = 0xffffffff;" (assignment_expression "local_88._12_4_ = 0xffffffff" (field_expression "local_88._12_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (expression_statement "local_78 = local_88;" (assignment_expression "local_78 = local_88" identifier = identifier) ;) (expression_statement "local_b8 = uVar13;" (assignment_expression "local_b8 = uVar13" identifier = identifier) ;) (if_statement "if (lVar8 != 0) {\n    lVar21 = 0;\n    uVar23 = (uint)(param_3 >> 6);\n    uVar13 = 1L << (param_3 & 0x3f);\n    puVar10 = __src;\n    do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);\n  }" if (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) (compound_statement "{\n    lVar21 = 0;\n    uVar23 = (uint)(param_3 >> 6);\n    uVar13 = 1L << (param_3 & 0x3f);\n    puVar10 = __src;\n    do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);\n  }" { (expression_statement "lVar21 = 0;" (assignment_expression "lVar21 = 0" identifier = number_literal) ;) (expression_statement "uVar23 = (uint)(param_3 >> 6);" (assignment_expression "uVar23 = (uint)(param_3 >> 6)" identifier = (call_expression "(uint)(param_3 >> 6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 >> 6)" ( (binary_expression "param_3 >> 6" identifier >> number_literal) )))) ;) (expression_statement "uVar13 = 1L << (param_3 & 0x3f);" (assignment_expression "uVar13 = 1L << (param_3 & 0x3f)" identifier = (binary_expression "1L << (param_3 & 0x3f)" number_literal << (parenthesized_expression "(param_3 & 0x3f)" ( (binary_expression "param_3 & 0x3f" identifier & number_literal) )))) ;) (expression_statement "puVar10 = __src;" (assignment_expression "puVar10 = __src" identifier = identifier) ;) (do_statement "do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);" do (compound_statement "{\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    }" { (while_statement "while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }" { (expression_statement "uVar22 = *puVar10;" (assignment_expression "uVar22 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "uVar32 = puVar10[1];" (assignment_expression "uVar32 = puVar10[1]" identifier = (subscript_expression "puVar10[1]" identifier [ number_literal ])) ;) (expression_statement "uVar19 = (uint)puVar10[1];" (assignment_expression "uVar19 = (uint)puVar10[1]" identifier = (cast_expression "(uint)puVar10[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar10[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);" (assignment_expression "uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8)" identifier = (pointer_expression "*(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8)" * (cast_expression "(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x2e0) + uVar22 * 8)" ( (binary_expression "*(long *)(param_2 + 0x2e0) + uVar22 * 8" (pointer_expression "*(long *)(param_2 + 0x2e0)" * (cast_expression "(long *)(param_2 + 0x2e0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x2e0)" ( (binary_expression "param_2 + 0x2e0" identifier + number_literal) )))) + (binary_expression "uVar22 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (uVar12 < 0x100) break;" if (parenthesized_expression "(uVar12 < 0x100)" ( (binary_expression "uVar12 < 0x100" identifier < number_literal) )) (break_statement "break;" break ;)) (if_statement "if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }" if (parenthesized_expression "((long)uVar12 < 0x114)" ( (binary_expression "(long)uVar12 < 0x114" (cast_expression "(long)uVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (compound_statement "{\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }" { (if_statement "if (uVar12 != 0x10a) goto LAB_0011435a;" if (parenthesized_expression "(uVar12 != 0x10a)" ( (binary_expression "uVar12 != 0x10a" identifier != number_literal) )) (goto_statement "goto LAB_0011435a;" goto statement_identifier ;)) (expression_statement "lVar26 = lVar7 + *(long *)(param_2 + 0x358);" (assignment_expression "lVar26 = lVar7 + *(long *)(param_2 + 0x358)" identifier = (binary_expression "lVar7 + *(long *)(param_2 + 0x358)" identifier + (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))))) ;) (expression_statement "pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));" (assignment_expression "pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250))" identifier = (cast_expression "(undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250))" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250))" ( (binary_expression "*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250)" (binary_expression "*(long *)(param_2 + 0x268) * 0x20" (pointer_expression "*(long *)(param_2 + 0x268)" * (cast_expression "(long *)(param_2 + 0x268)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x268)" ( (binary_expression "param_2 + 0x268" identifier + number_literal) )))) * number_literal) + (pointer_expression "*(long *)(param_2 + 0x250)" * (cast_expression "(long *)(param_2 + 0x250)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x250)" ( (binary_expression "param_2 + 0x250" identifier + number_literal) ))))) )))) ;) (expression_statement "local_68 = *pauVar14;" (assignment_expression "local_68 = *pauVar14" identifier = (pointer_expression "*pauVar14" * identifier)) ;) (expression_statement "local_58 = pauVar14[1];" (assignment_expression "local_58 = pauVar14[1]" identifier = (subscript_expression "pauVar14[1]" identifier [ number_literal ])) ;) (expression_statement "bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;" (assignment_expression "bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1" identifier = (binary_expression "(byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1" (call_expression "(byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f))" ( (binary_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)" (pointer_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8)" * (cast_expression "(ulong *)(local_68 + (ulong)uVar23 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_68 + (ulong)uVar23 * 8)" ( (binary_expression "local_68 + (ulong)uVar23 * 8" identifier + (binary_expression "(ulong)uVar23 * 8" (cast_expression "(ulong)uVar23" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) )))) >> (parenthesized_expression "(param_3 & 0x3f)" ( (binary_expression "param_3 & 0x3f" identifier & number_literal) ))) ))) & number_literal)) ;) (if_statement "if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }" if (parenthesized_expression "((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0)" ( (binary_expression "(*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0" (parenthesized_expression "(*(byte *)(lVar26 + 0x20) & uVar19 & 7)" ( (binary_expression "*(byte *)(lVar26 + 0x20) & uVar19 & 7" (binary_expression "*(byte *)(lVar26 + 0x20) & uVar19" (pointer_expression "*(byte *)(lVar26 + 0x20)" * (cast_expression "(byte *)(lVar26 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar26 + 0x20)" ( (binary_expression "lVar26 + 0x20" identifier + number_literal) )))) & identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }" { (if_statement "if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }" if (parenthesized_expression "(*(long *)(lVar26 + 0x38) == 0)" ( (binary_expression "*(long *)(lVar26 + 0x38) == 0" (pointer_expression "*(long *)(lVar26 + 0x38)" * (cast_expression "(long *)(lVar26 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar26 + 0x38)" ( (binary_expression "lVar26 + 0x38" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }" { (expression_statement "uVar16 = FUN_00120ce0(0x10);" (assignment_expression "uVar16 = FUN_00120ce0(0x10)" identifier = (call_expression "FUN_00120ce0(0x10)" identifier (argument_list "(0x10)" ( number_literal )))) ;) (expression_statement "uVar5 = _UNK_001282a8;" (assignment_expression "uVar5 = _UNK_001282a8" identifier = identifier) ;) (expression_statement "uVar4 = _DAT_001282a0;" (assignment_expression "uVar4 = _DAT_001282a0" identifier = identifier) ;) (expression_statement "*(undefined8 *)(lVar26 + 0x30) = uVar16;" (assignment_expression "*(undefined8 *)(lVar26 + 0x30) = uVar16" (pointer_expression "*(undefined8 *)(lVar26 + 0x30)" * (cast_expression "(undefined8 *)(lVar26 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar26 + 0x30)" ( (binary_expression "lVar26 + 0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(lVar26 + 0x38) = uVar4;" (assignment_expression "*(undefined8 *)(lVar26 + 0x38) = uVar4" (pointer_expression "*(undefined8 *)(lVar26 + 0x38)" * (cast_expression "(undefined8 *)(lVar26 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar26 + 0x38)" ( (binary_expression "lVar26 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(lVar26 + 0x40) = uVar5;" (assignment_expression "*(undefined8 *)(lVar26 + 0x40) = uVar5" (pointer_expression "*(undefined8 *)(lVar26 + 0x40)" * (cast_expression "(undefined8 *)(lVar26 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar26 + 0x40)" ( (binary_expression "lVar26 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "lVar26 = lVar7 + *(long *)(param_2 + 0x358);" (assignment_expression "lVar26 = lVar7 + *(long *)(param_2 + 0x358)" identifier = (binary_expression "lVar7 + *(long *)(param_2 + 0x358)" identifier + (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))))) ;) })) (expression_statement "FUN_00112200(uVar22,uVar32,lVar26 + 0x30);" (call_expression "FUN_00112200(uVar22,uVar32,lVar26 + 0x30)" identifier (argument_list "(uVar22,uVar32,lVar26 + 0x30)" ( identifier , identifier , (binary_expression "lVar26 + 0x30" identifier + number_literal) ))) ;) })) (expression_statement "uVar12 = local_68._0_8_;" (assignment_expression "uVar12 = local_68._0_8_" identifier = (field_expression "local_68._0_8_" identifier . field_identifier)) ;) (expression_statement "uVar27 = local_58._0_8_;" (assignment_expression "uVar27 = local_58._0_8_" identifier = (field_expression "local_58._0_8_" identifier . field_identifier)) ;) (expression_statement "uVar29 = local_68._8_8_;" (assignment_expression "uVar29 = local_68._8_8_" identifier = (field_expression "local_68._8_8_" identifier . field_identifier)) ;) (expression_statement "uVar30 = local_58._8_8_;" (assignment_expression "uVar30 = local_58._8_8_" identifier = (field_expression "local_58._8_8_" identifier . field_identifier)) ;) (if_statement "if (uVar19 != 0x1ff) goto LAB_0011485e;" if (parenthesized_expression "(uVar19 != 0x1ff)" ( (binary_expression "uVar19 != 0x1ff" identifier != number_literal) )) (goto_statement "goto LAB_0011485e;" goto statement_identifier ;)) (labeled_statement "LAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;" statement_identifier : (if_statement "if (bVar18 != 0) goto LAB_00114267;" if (parenthesized_expression "(bVar18 != 0)" ( (binary_expression "bVar18 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00114267;" goto statement_identifier ;))) }) (else_clause "else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }" else (compound_statement "{\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }" { (expression_statement "lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);" (assignment_expression "lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250)" identifier = (binary_expression "uVar12 * 0x20 + *(long *)(param_2 + 0x250)" (binary_expression "uVar12 * 0x20" identifier * number_literal) + (pointer_expression "*(long *)(param_2 + 0x250)" * (cast_expression "(long *)(param_2 + 0x250)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x250)" ( (binary_expression "param_2 + 0x250" identifier + number_literal) )))))) ;) (expression_statement "local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);" (assignment_expression "local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280)" identifier = (pointer_expression "*(undefined1 (*) [16])(lVar26 + -0x2280)" * (cast_expression "(undefined1 (*) [16])(lVar26 + -0x2280)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(lVar26 + -0x2280)" ( (binary_expression "lVar26 + -0x2280" identifier + number_literal) ))))) ;) (expression_statement "local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);" (assignment_expression "local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270)" identifier = (pointer_expression "*(undefined1 (*) [16])(lVar26 + -0x2270)" * (cast_expression "(undefined1 (*) [16])(lVar26 + -0x2270)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (parenthesized_expression "(lVar26 + -0x2270)" ( (binary_expression "lVar26 + -0x2270" identifier + number_literal) ))))) ;) (if_statement "if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;" if (parenthesized_expression "((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0)" ( (binary_expression "(*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0" (parenthesized_expression "(*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13)" ( (binary_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13" (pointer_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8)" * (cast_expression "(ulong *)(local_68 + (ulong)uVar23 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_68 + (ulong)uVar23 * 8)" ( (binary_expression "local_68 + (ulong)uVar23 * 8" identifier + (binary_expression "(ulong)uVar23 * 8" (cast_expression "(ulong)uVar23" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) )))) & identifier) )) != number_literal) )) (goto_statement "goto LAB_0011423a;" goto statement_identifier ;)) (labeled_statement "LAB_0011482f:\n          bVar18 = 0;" statement_identifier : (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" identifier = number_literal) ;)) (expression_statement "uVar12 = local_68._0_8_;" (assignment_expression "uVar12 = local_68._0_8_" identifier = (field_expression "local_68._0_8_" identifier . field_identifier)) ;) (expression_statement "uVar27 = local_58._0_8_;" (assignment_expression "uVar27 = local_58._0_8_" identifier = (field_expression "local_58._0_8_" identifier . field_identifier)) ;) (expression_statement "uVar29 = local_68._8_8_;" (assignment_expression "uVar29 = local_68._8_8_" identifier = (field_expression "local_68._8_8_" identifier . field_identifier)) ;) (expression_statement "uVar30 = local_58._8_8_;" (assignment_expression "uVar30 = local_58._8_8_" identifier = (field_expression "local_58._8_8_" identifier . field_identifier)) ;) (if_statement "if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }" if (parenthesized_expression "(uVar19 != 0x1ff)" ( (binary_expression "uVar19 != 0x1ff" identifier != number_literal) )) (compound_statement "{\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }" { (labeled_statement "LAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);" statement_identifier : (expression_statement "bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);" (assignment_expression "bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7)" identifier = (pointer_expression "*(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7)" * (cast_expression "(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x358) + 0x20 + lVar7)" ( (binary_expression "*(long *)(param_2 + 0x358) + 0x20 + lVar7" (binary_expression "*(long *)(param_2 + 0x358) + 0x20" (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))) + number_literal) + identifier) ))))) ;)) (expression_statement "uVar12 = local_68._0_8_;" (assignment_expression "uVar12 = local_68._0_8_" identifier = (field_expression "local_68._0_8_" identifier . field_identifier)) ;) (expression_statement "uVar27 = local_58._0_8_;" (assignment_expression "uVar27 = local_58._0_8_" identifier = (field_expression "local_58._0_8_" identifier . field_identifier)) ;) (expression_statement "uVar29 = local_68._8_8_;" (assignment_expression "uVar29 = local_68._8_8_" identifier = (field_expression "local_68._8_8_" identifier . field_identifier)) ;) (expression_statement "uVar30 = local_58._8_8_;" (assignment_expression "uVar30 = local_58._8_8_" identifier = (field_expression "local_58._8_8_" identifier . field_identifier)) ;) (if_statement "if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" if (parenthesized_expression "(((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0)" ( (binary_expression "((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0" (parenthesized_expression "((int)uVar19 >> 6 & (uint)bVar2 & 7)" ( (binary_expression "(int)uVar19 >> 6 & (uint)bVar2 & 7" (binary_expression "(int)uVar19 >> 6 & (uint)bVar2" (binary_expression "(int)uVar19 >> 6" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" { (expression_statement "uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);" (assignment_expression "uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230)" identifier = (binary_expression "local_68._0_8_ & ~*(ulong *)(param_2 + 0x230)" (field_expression "local_68._0_8_" identifier . field_identifier) & (unary_expression "~*(ulong *)(param_2 + 0x230)" ~ (pointer_expression "*(ulong *)(param_2 + 0x230)" * (cast_expression "(ulong *)(param_2 + 0x230)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x230)" ( (binary_expression "param_2 + 0x230" identifier + number_literal) ))))))) ;) (expression_statement "uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);" (assignment_expression "uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238)" identifier = (binary_expression "local_68._8_8_ & ~*(ulong *)(param_2 + 0x238)" (field_expression "local_68._8_8_" identifier . field_identifier) & (unary_expression "~*(ulong *)(param_2 + 0x238)" ~ (pointer_expression "*(ulong *)(param_2 + 0x238)" * (cast_expression "(ulong *)(param_2 + 0x238)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x238)" ( (binary_expression "param_2 + 0x238" identifier + number_literal) ))))))) ;) (expression_statement "local_68._8_8_ = uVar29;" (assignment_expression "local_68._8_8_ = uVar29" (field_expression "local_68._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "local_68._0_8_ = uVar12;" (assignment_expression "local_68._0_8_ = uVar12" (field_expression "local_68._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);" (assignment_expression "uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240)" identifier = (binary_expression "local_58._0_8_ & ~*(ulong *)(param_2 + 0x240)" (field_expression "local_58._0_8_" identifier . field_identifier) & (unary_expression "~*(ulong *)(param_2 + 0x240)" ~ (pointer_expression "*(ulong *)(param_2 + 0x240)" * (cast_expression "(ulong *)(param_2 + 0x240)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x240)" ( (binary_expression "param_2 + 0x240" identifier + number_literal) ))))))) ;) (expression_statement "uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);" (assignment_expression "uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248)" identifier = (binary_expression "local_58._8_8_ & ~*(ulong *)(param_2 + 0x248)" (field_expression "local_58._8_8_" identifier . field_identifier) & (unary_expression "~*(ulong *)(param_2 + 0x248)" ~ (pointer_expression "*(ulong *)(param_2 + 0x248)" * (cast_expression "(ulong *)(param_2 + 0x248)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x248)" ( (binary_expression "param_2 + 0x248" identifier + number_literal) ))))))) ;) (expression_statement "local_58._8_8_ = uVar30;" (assignment_expression "local_58._8_8_ = uVar30" (field_expression "local_58._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "local_58._0_8_ = uVar27;" (assignment_expression "local_58._0_8_ = uVar27" (field_expression "local_58._0_8_" identifier . field_identifier) = identifier) ;) })) (if_statement "if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" if (parenthesized_expression "(((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0)" ( (binary_expression "((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0" (parenthesized_expression "((int)uVar19 >> 3 & (uint)bVar2 & 7)" ( (binary_expression "(int)uVar19 >> 3 & (uint)bVar2 & 7" (binary_expression "(int)uVar19 >> 3 & (uint)bVar2" (binary_expression "(int)uVar19 >> 3" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) & (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" { (expression_statement "uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);" (assignment_expression "uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210)" identifier = (binary_expression "uVar12 & ~*(ulong *)(param_2 + 0x210)" identifier & (unary_expression "~*(ulong *)(param_2 + 0x210)" ~ (pointer_expression "*(ulong *)(param_2 + 0x210)" * (cast_expression "(ulong *)(param_2 + 0x210)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x210)" ( (binary_expression "param_2 + 0x210" identifier + number_literal) ))))))) ;) (expression_statement "uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);" (assignment_expression "uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218)" identifier = (binary_expression "uVar29 & ~*(ulong *)(param_2 + 0x218)" identifier & (unary_expression "~*(ulong *)(param_2 + 0x218)" ~ (pointer_expression "*(ulong *)(param_2 + 0x218)" * (cast_expression "(ulong *)(param_2 + 0x218)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x218)" ( (binary_expression "param_2 + 0x218" identifier + number_literal) ))))))) ;) (expression_statement "local_68._8_8_ = uVar29;" (assignment_expression "local_68._8_8_ = uVar29" (field_expression "local_68._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "local_68._0_8_ = uVar12;" (assignment_expression "local_68._0_8_ = uVar12" (field_expression "local_68._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);" (assignment_expression "uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220)" identifier = (binary_expression "uVar27 & ~*(ulong *)(param_2 + 0x220)" identifier & (unary_expression "~*(ulong *)(param_2 + 0x220)" ~ (pointer_expression "*(ulong *)(param_2 + 0x220)" * (cast_expression "(ulong *)(param_2 + 0x220)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x220)" ( (binary_expression "param_2 + 0x220" identifier + number_literal) ))))))) ;) (expression_statement "uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);" (assignment_expression "uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228)" identifier = (binary_expression "uVar30 & ~*(ulong *)(param_2 + 0x228)" identifier & (unary_expression "~*(ulong *)(param_2 + 0x228)" ~ (pointer_expression "*(ulong *)(param_2 + 0x228)" * (cast_expression "(ulong *)(param_2 + 0x228)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x228)" ( (binary_expression "param_2 + 0x228" identifier + number_literal) ))))))) ;) (expression_statement "local_58._8_8_ = uVar30;" (assignment_expression "local_58._8_8_ = uVar30" (field_expression "local_58._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "local_58._0_8_ = uVar27;" (assignment_expression "local_58._0_8_ = uVar27" (field_expression "local_58._0_8_" identifier . field_identifier) = identifier) ;) })) (if_statement "if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" if (parenthesized_expression "((uVar19 & bVar2 & 7) == 0)" ( (binary_expression "(uVar19 & bVar2 & 7) == 0" (parenthesized_expression "(uVar19 & bVar2 & 7)" ( (binary_expression "uVar19 & bVar2 & 7" (binary_expression "uVar19 & bVar2" identifier & identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" { (expression_statement "uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));" (assignment_expression "uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230))" identifier = (binary_expression "uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230))" identifier & (parenthesized_expression "(*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230))" ( (binary_expression "*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230)" (pointer_expression "*(ulong *)(param_2 + 0x210)" * (cast_expression "(ulong *)(param_2 + 0x210)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x210)" ( (binary_expression "param_2 + 0x210" identifier + number_literal) )))) | (pointer_expression "*(ulong *)(param_2 + 0x230)" * (cast_expression "(ulong *)(param_2 + 0x230)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x230)" ( (binary_expression "param_2 + 0x230" identifier + number_literal) ))))) )))) ;) (expression_statement "uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));" (assignment_expression "uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238))" identifier = (binary_expression "uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238))" identifier & (parenthesized_expression "(*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238))" ( (binary_expression "*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238)" (pointer_expression "*(ulong *)(param_2 + 0x218)" * (cast_expression "(ulong *)(param_2 + 0x218)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x218)" ( (binary_expression "param_2 + 0x218" identifier + number_literal) )))) | (pointer_expression "*(ulong *)(param_2 + 0x238)" * (cast_expression "(ulong *)(param_2 + 0x238)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x238)" ( (binary_expression "param_2 + 0x238" identifier + number_literal) ))))) )))) ;) (expression_statement "uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));" (assignment_expression "uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240))" identifier = (binary_expression "uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240))" identifier & (parenthesized_expression "(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240))" ( (binary_expression "*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)" (pointer_expression "*(ulong *)(param_2 + 0x220)" * (cast_expression "(ulong *)(param_2 + 0x220)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x220)" ( (binary_expression "param_2 + 0x220" identifier + number_literal) )))) | (pointer_expression "*(ulong *)(param_2 + 0x240)" * (cast_expression "(ulong *)(param_2 + 0x240)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x240)" ( (binary_expression "param_2 + 0x240" identifier + number_literal) ))))) )))) ;) (expression_statement "local_68._8_8_ = uVar29;" (assignment_expression "local_68._8_8_ = uVar29" (field_expression "local_68._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "local_68._0_8_ = uVar12;" (assignment_expression "local_68._0_8_ = uVar12" (field_expression "local_68._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));" (assignment_expression "uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248))" identifier = (binary_expression "uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248))" identifier & (parenthesized_expression "(*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248))" ( (binary_expression "*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248)" (pointer_expression "*(ulong *)(param_2 + 0x228)" * (cast_expression "(ulong *)(param_2 + 0x228)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x228)" ( (binary_expression "param_2 + 0x228" identifier + number_literal) )))) | (pointer_expression "*(ulong *)(param_2 + 0x248)" * (cast_expression "(ulong *)(param_2 + 0x248)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x248)" ( (binary_expression "param_2 + 0x248" identifier + number_literal) ))))) )))) ;) (expression_statement "local_58._8_8_ = uVar30;" (assignment_expression "local_58._8_8_ = uVar30" (field_expression "local_58._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "local_58._0_8_ = uVar27;" (assignment_expression "local_58._0_8_ = uVar27" (field_expression "local_58._0_8_" identifier . field_identifier) = identifier) ;) })) (if_statement "if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;" if (parenthesized_expression "(((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0)" ( (binary_expression "((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0" (parenthesized_expression "((uVar12 == 0 && uVar29 == 0) && uVar27 == 0)" ( (binary_expression "(uVar12 == 0 && uVar29 == 0) && uVar27 == 0" (parenthesized_expression "(uVar12 == 0 && uVar29 == 0)" ( (binary_expression "uVar12 == 0 && uVar29 == 0" (binary_expression "uVar12 == 0" identifier == number_literal) && (binary_expression "uVar29 == 0" identifier == number_literal)) )) && (binary_expression "uVar27 == 0" identifier == number_literal)) )) && (binary_expression "uVar30 == 0" identifier == number_literal)) )) (goto_statement "goto LAB_0011435a;" goto statement_identifier ;)) (if_statement "if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;" if (parenthesized_expression "((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0)" ( (binary_expression "(*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0" (parenthesized_expression "(*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13)" ( (binary_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13" (pointer_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8)" * (cast_expression "(ulong *)(local_68 + (ulong)uVar23 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_68 + (ulong)uVar23 * 8)" ( (binary_expression "local_68 + (ulong)uVar23 * 8" identifier + (binary_expression "(ulong)uVar23 * 8" (cast_expression "(ulong)uVar23" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) )))) & identifier) )) != number_literal) )) (goto_statement "goto LAB_0011445b;" goto statement_identifier ;)) })) }))) (expression_statement "lVar21 = lVar21 + 1;" (assignment_expression "lVar21 = lVar21 + 1" identifier = (binary_expression "lVar21 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar10 + 2;" (assignment_expression "puVar10 = puVar10 + 2" identifier = (binary_expression "puVar10 + 2" identifier + number_literal)) ;) (expression_statement "auVar35._8_8_ = uVar30;" (assignment_expression "auVar35._8_8_ = uVar30" (field_expression "auVar35._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar35._0_8_ = uVar27;" (assignment_expression "auVar35._0_8_ = uVar27" (field_expression "auVar35._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "local_78 = ~auVar35 & local_78;" (assignment_expression "local_78 = ~auVar35 & local_78" identifier = (binary_expression "~auVar35 & local_78" (unary_expression "~auVar35" ~ identifier) & identifier)) ;) (expression_statement "local_88._8_8_ = ~uVar29 & local_88._8_8_;" (assignment_expression "local_88._8_8_ = ~uVar29 & local_88._8_8_" (field_expression "local_88._8_8_" identifier . field_identifier) = (binary_expression "~uVar29 & local_88._8_8_" (unary_expression "~uVar29" ~ identifier) & (field_expression "local_88._8_8_" identifier . field_identifier))) ;) (expression_statement "local_88._0_8_ = ~uVar12 & local_88._0_8_;" (assignment_expression "local_88._0_8_ = ~uVar12 & local_88._0_8_" (field_expression "local_88._0_8_" identifier . field_identifier) = (binary_expression "~uVar12 & local_88._0_8_" (unary_expression "~uVar12" ~ identifier) & (field_expression "local_88._0_8_" identifier . field_identifier))) ;) (if_statement "if (lVar21 == lVar8) goto LAB_001144c5;" if (parenthesized_expression "(lVar21 == lVar8)" ( (binary_expression "lVar21 == lVar8" identifier == identifier) )) (goto_statement "goto LAB_001144c5;" goto statement_identifier ;)) })) (expression_statement "local_68 = (undefined1  [16])0x0;" (assignment_expression "local_68 = (undefined1  [16])0x0" identifier = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "local_58 = (undefined1  [16])0x0;" (assignment_expression "local_58 = (undefined1  [16])0x0" identifier = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "*(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);" (assignment_expression "*(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f)" (pointer_expression "*(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8)" * (cast_expression "(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8)" ( (binary_expression "local_68 + (uVar12 >> 6 & 0x3ffffff) * 8" identifier + (binary_expression "(uVar12 >> 6 & 0x3ffffff) * 8" (parenthesized_expression "(uVar12 >> 6 & 0x3ffffff)" ( (binary_expression "uVar12 >> 6 & 0x3ffffff" (binary_expression "uVar12 >> 6" identifier >> number_literal) & number_literal) )) * number_literal)) )))) = (binary_expression "1L << ((byte)uVar12 & 0x3f)" number_literal << (parenthesized_expression "((byte)uVar12 & 0x3f)" ( (binary_expression "(byte)uVar12 & 0x3f" (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if (uVar12 != param_3) goto LAB_0011482f;" if (parenthesized_expression "(uVar12 != param_3)" ( (binary_expression "uVar12 != param_3" identifier != identifier) )) (goto_statement "goto LAB_0011482f;" goto statement_identifier ;)) (labeled_statement "LAB_0011423a:\n      uVar12 = local_68._0_8_;" statement_identifier : (expression_statement "uVar12 = local_68._0_8_;" (assignment_expression "uVar12 = local_68._0_8_" identifier = (field_expression "local_68._0_8_" identifier . field_identifier)) ;)) (expression_statement "uVar27 = local_58._0_8_;" (assignment_expression "uVar27 = local_58._0_8_" identifier = (field_expression "local_58._0_8_" identifier . field_identifier)) ;) (expression_statement "uVar29 = local_68._8_8_;" (assignment_expression "uVar29 = local_68._8_8_" identifier = (field_expression "local_68._8_8_" identifier . field_identifier)) ;) (expression_statement "uVar30 = local_58._8_8_;" (assignment_expression "uVar30 = local_58._8_8_" identifier = (field_expression "local_58._8_8_" identifier . field_identifier)) ;) (if_statement "if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }" if (parenthesized_expression "(uVar19 != 0x1ff)" ( (binary_expression "uVar19 != 0x1ff" identifier != number_literal) )) (compound_statement "{\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }" { (expression_statement "bVar18 = 1;" (assignment_expression "bVar18 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0011485e;" goto statement_identifier ;) })) (labeled_statement "LAB_00114267:\n      uVar6 = local_b8;" statement_identifier : (expression_statement "uVar6 = local_b8;" (assignment_expression "uVar6 = local_b8" identifier = identifier) ;)) (expression_statement "auVar34._8_8_ = uVar30;" (assignment_expression "auVar34._8_8_ = uVar30" (field_expression "auVar34._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar34._0_8_ = uVar27;" (assignment_expression "auVar34._0_8_ = uVar27" (field_expression "auVar34._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "local_78 = auVar34 & local_78;" (assignment_expression "local_78 = auVar34 & local_78" identifier = (binary_expression "auVar34 & local_78" identifier & identifier)) ;) (expression_statement "local_88._8_8_ = uVar29 & local_88._8_8_;" (assignment_expression "local_88._8_8_ = uVar29 & local_88._8_8_" (field_expression "local_88._8_8_" identifier . field_identifier) = (binary_expression "uVar29 & local_88._8_8_" identifier & (field_expression "local_88._8_8_" identifier . field_identifier))) ;) (expression_statement "local_88._0_8_ = uVar12 & local_88._0_8_;" (assignment_expression "local_88._0_8_ = uVar12 & local_88._0_8_" (field_expression "local_88._0_8_" identifier . field_identifier) = (binary_expression "uVar12 & local_88._0_8_" identifier & (field_expression "local_88._0_8_" identifier . field_identifier))) ;) (if_statement "if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }" if (parenthesized_expression "((long)local_b8 <= local_c0)" ( (binary_expression "(long)local_b8 <= local_c0" (cast_expression "(long)local_b8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) <= identifier) )) (compound_statement "{\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }" { (expression_statement "uVar12 = ((long)local_b8 >> 1) + local_b8;" (assignment_expression "uVar12 = ((long)local_b8 >> 1) + local_b8" identifier = (binary_expression "((long)local_b8 >> 1) + local_b8" (parenthesized_expression "((long)local_b8 >> 1)" ( (binary_expression "(long)local_b8 >> 1" (cast_expression "(long)local_b8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )) + identifier)) ;) (if_statement "if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }" if (parenthesized_expression "((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))" ( (binary_expression "(SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" (parenthesized_expression "(SCARRY8((long)local_b8 >> 1,local_b8))" ( (call_expression "SCARRY8((long)local_b8 >> 1,local_b8)" identifier (argument_list "((long)local_b8 >> 1,local_b8)" ( (binary_expression "(long)local_b8 >> 1" (cast_expression "(long)local_b8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) , identifier ))) )) || (parenthesized_expression "(lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" ( (comma_expression "lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)" (assignment_expression "lVar26 = uVar12 * 0x10" identifier = (binary_expression "uVar12 * 0x10" identifier * number_literal)) , (binary_expression "SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816(lVar26)" identifier (argument_list "(lVar26)" ( identifier ))) != (binary_expression "SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816((long)uVar12)" identifier (argument_list "((long)uVar12)" ( (cast_expression "(long)uVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) * (call_expression "SEXT816(0x10)" identifier (argument_list "(0x10)" ( number_literal )))))) ))) )) (compound_statement "{\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }" { (expression_statement "uVar12 = 0x7ffffffffffffff;" (assignment_expression "uVar12 = 0x7ffffffffffffff" identifier = number_literal) ;) (expression_statement "lVar26 = 0x7ffffffffffffff0;" (assignment_expression "lVar26 = 0x7ffffffffffffff0" identifier = number_literal) ;) }) (else_clause "else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }" else (if_statement "if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }" if (parenthesized_expression "(lVar26 < 0x80)" ( (binary_expression "lVar26 < 0x80" identifier < number_literal) )) (compound_statement "{\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }" { (expression_statement "lVar26 = 0x80;" (assignment_expression "lVar26 = 0x80" identifier = number_literal) ;) (expression_statement "uVar12 = 8;" (assignment_expression "uVar12 = 8" identifier = number_literal) ;) })))) (if_statement "if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }" if (parenthesized_expression "(local_c8 == (long *)0x0)" ( (binary_expression "local_c8 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          local_b8 = 0;\n        }" { (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) })) (if_statement "if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;" if (parenthesized_expression "(((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))" ( (binary_expression "((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))))" (parenthesized_expression "((long)(uVar12 - uVar6) < 1)" ( (binary_expression "(long)(uVar12 - uVar6) < 1" (cast_expression "(long)(uVar12 - uVar6)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar12 - uVar6)" ( (binary_expression "uVar12 - uVar6" identifier - identifier) ))) < number_literal) )) && (parenthesized_expression "((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))))" ( (parenthesized_expression "(uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))" ( (comma_expression "uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" (assignment_expression "uVar12 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) , (binary_expression "SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" (call_expression "SCARRY8(uVar6,1)" identifier (argument_list "(uVar6,1)" ( identifier , number_literal ))) || (parenthesized_expression "(lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" ( (comma_expression "lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)" (assignment_expression "lVar26 = uVar12 * 0x10" identifier = (binary_expression "uVar12 * 0x10" identifier * number_literal)) , (binary_expression "SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816(lVar26)" identifier (argument_list "(lVar26)" ( identifier ))) != (binary_expression "SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816((long)uVar12)" identifier (argument_list "((long)uVar12)" ( (cast_expression "(long)uVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) * (call_expression "SEXT816(0x10)" identifier (argument_list "(0x10)" ( number_literal )))))) )))) )) ))) )) (goto_statement "goto LAB_00114c1c;" goto statement_identifier ;)) (expression_statement "local_c8 = (long *)FUN_00120d00(local_c8,lVar26);" (assignment_expression "local_c8 = (long *)FUN_00120d00(local_c8,lVar26)" identifier = (cast_expression "(long *)FUN_00120d00(local_c8,lVar26)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00120d00(local_c8,lVar26)" identifier (argument_list "(local_c8,lVar26)" ( identifier , identifier ))))) ;) (expression_statement "local_b8 = uVar12;" (assignment_expression "local_b8 = uVar12" identifier = identifier) ;) })) (expression_statement "local_c8[local_c0 * 2] = uVar22;" (assignment_expression "local_c8[local_c0 * 2] = uVar22" (subscript_expression "local_c8[local_c0 * 2]" identifier [ (binary_expression "local_c0 * 2" identifier * number_literal) ]) = identifier) ;) (expression_statement "*(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;" (assignment_expression "*(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32" (pointer_expression "*(int *)(local_c8 + local_c0 * 2 + 1)" * (cast_expression "(int *)(local_c8 + local_c0 * 2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_c8 + local_c0 * 2 + 1)" ( (binary_expression "local_c8 + local_c0 * 2 + 1" (binary_expression "local_c8 + local_c0 * 2" identifier + (binary_expression "local_c0 * 2" identifier * number_literal)) + number_literal) )))) = (cast_expression "(int)uVar32" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_c0 = local_c0 + 1;" (assignment_expression "local_c0 = local_c0 + 1" identifier = (binary_expression "local_c0 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_0011435a:\n      lVar21 = lVar21 + 1;" statement_identifier : (expression_statement "lVar21 = lVar21 + 1;" (assignment_expression "lVar21 = lVar21 + 1" identifier = (binary_expression "lVar21 + 1" identifier + number_literal)) ;)) (expression_statement "puVar10 = puVar10 + 2;" (assignment_expression "puVar10 = puVar10 + 2" identifier = (binary_expression "puVar10 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar21 != lVar8)" ( (binary_expression "lVar21 != lVar8" identifier != identifier) )) ;) })) (labeled_statement "LAB_001144c5:\n  uVar13 = *(ulong *)(param_2 + 0x300);" statement_identifier : (expression_statement "uVar13 = *(ulong *)(param_2 + 0x300);" (assignment_expression "uVar13 = *(ulong *)(param_2 + 0x300)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x300)" * (cast_expression "(ulong *)(param_2 + 0x300)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x300)" ( (binary_expression "param_2 + 0x300" identifier + number_literal) ))))) ;)) (if_statement "if ((long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0) goto LAB_00114c1c;" if (parenthesized_expression "((long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0)" ( (binary_expression "(long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0" (binary_expression "(long)(uVar13 << 4) < 0" (cast_expression "(long)(uVar13 << 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(uVar13 << 4)" ( (binary_expression "uVar13 << 4" identifier << number_literal) ))) < number_literal) || (binary_expression "uVar13 >> 0x3c != 0" (binary_expression "uVar13 >> 0x3c" identifier >> number_literal) != number_literal)) )) (goto_statement "goto LAB_00114c1c;" goto statement_identifier ;)) (expression_statement "local_a8 = (void *)FUN_00120ce0();" (assignment_expression "local_a8 = (void *)FUN_00120ce0()" identifier = (cast_expression "(void *)FUN_00120ce0()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00120ce0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_a0 = 0;" (assignment_expression "local_a0 = 0" identifier = number_literal) ;) (expression_statement "local_98 = uVar13;" (assignment_expression "local_98 = uVar13" identifier = identifier) ;) (if_statement "if (local_c0 < 1) {\n    if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }\n    goto LAB_001146d6;\n  }" if (parenthesized_expression "(local_c0 < 1)" ( (binary_expression "local_c0 < 1" identifier < number_literal) )) (compound_statement "{\n    if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }\n    goto LAB_001146d6;\n  }" { (if_statement "if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }" if (parenthesized_expression "(*(char *)(param_2 + 0x378) == '\0')" ( (binary_expression "*(char *)(param_2 + 0x378) == '\0'" (pointer_expression "*(char *)(param_2 + 0x378)" * (cast_expression "(char *)(param_2 + 0x378)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x378)" ( (binary_expression "param_2 + 0x378" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }" { (expression_statement "lVar21 = -1;" (assignment_expression "lVar21 = -1" identifier = number_literal) ;) (expression_statement "lVar8 = -1;" (assignment_expression "lVar8 = -1" identifier = number_literal) ;) (expression_statement "lVar7 = lVar21;" (assignment_expression "lVar7 = lVar21" identifier = identifier) ;) }) (else_clause "else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }" else (compound_statement "{\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }" { (expression_statement "lVar8 = *(long *)(param_2 + 0x3c0);" (assignment_expression "lVar8 = *(long *)(param_2 + 0x3c0)" identifier = (pointer_expression "*(long *)(param_2 + 0x3c0)" * (cast_expression "(long *)(param_2 + 0x3c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3c0)" ( (binary_expression "param_2 + 0x3c0" identifier + number_literal) ))))) ;) (expression_statement "lVar21 = 0;" (assignment_expression "lVar21 = 0" identifier = number_literal) ;) (expression_statement "lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);" (assignment_expression "lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1)" identifier = (cast_expression "(long)(*(int *)(param_2 + 0x39c) + -1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(*(int *)(param_2 + 0x39c) + -1)" ( (binary_expression "*(int *)(param_2 + 0x39c) + -1" (pointer_expression "*(int *)(param_2 + 0x39c)" * (cast_expression "(int *)(param_2 + 0x39c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x39c)" ( (binary_expression "param_2 + 0x39c" identifier + number_literal) )))) + number_literal) )))) ;) }))) (goto_statement "goto LAB_001146d6;" goto statement_identifier ;) })) (if_statement "if (*(char *)(param_2 + 0x378) != '\0') {\n    if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }\n    FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);\n    FUN_00111e00(&local_a8,&local_a0,&local_c8);\n  }" if (parenthesized_expression "(*(char *)(param_2 + 0x378) != '\0')" ( (binary_expression "*(char *)(param_2 + 0x378) != '\0'" (pointer_expression "*(char *)(param_2 + 0x378)" * (cast_expression "(char *)(param_2 + 0x378)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x378)" ( (binary_expression "param_2 + 0x378" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }\n    FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);\n    FUN_00111e00(&local_a8,&local_a0,&local_c8);\n  }" { (if_statement "if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }" if (parenthesized_expression "(*(char *)(param_2 + 0x3fc) != '\0')" ( (binary_expression "*(char *)(param_2 + 0x3fc) != '\0'" (pointer_expression "*(char *)(param_2 + 0x3fc)" * (cast_expression "(char *)(param_2 + 0x3fc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3fc)" ( (binary_expression "param_2 + 0x3fc" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }" { (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);" do (compound_statement "{\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      }" { (expression_statement "lVar21 = lVar8 + 1;" (assignment_expression "lVar21 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) (if_statement "if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;" if (parenthesized_expression "((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)" ( (binary_expression "(*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0" (parenthesized_expression "(*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1)" ( (binary_expression "*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1" (pointer_expression "*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2])" * (cast_expression "(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2])" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2])" ( (binary_expression "*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]" (pointer_expression "*(long *)(param_2 + 0x348)" * (cast_expression "(long *)(param_2 + 0x348)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x348)" ( (binary_expression "param_2 + 0x348" identifier + number_literal) )))) + (subscript_expression "local_c8[lVar8 * 2]" identifier [ (binary_expression "lVar8 * 2" identifier * number_literal) ])) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00114536;" goto statement_identifier ;)) (expression_statement "lVar8 = lVar21;" (assignment_expression "lVar8 = lVar21" identifier = identifier) ;) }) while (parenthesized_expression "(lVar21 != local_c0)" ( (binary_expression "lVar21 != local_c0" identifier != identifier) )) ;) })) (expression_statement "FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);" (call_expression "FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8)" identifier (argument_list "(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8)" ( (binary_expression "*(long *)(param_2 + 0x358) + 8" (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))) + number_literal) , (binary_expression "*(long *)(param_2 + 0x358) + 0x10" (pointer_expression "*(long *)(param_2 + 0x358)" * (cast_expression "(long *)(param_2 + 0x358)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x358)" ( (binary_expression "param_2 + 0x358" identifier + number_literal) )))) + number_literal) , (pointer_expression "&local_c8" & identifier) , (pointer_expression "&local_c0" & identifier) , number_literal , (pointer_expression "&local_a8" & identifier) ))) ;) (expression_statement "FUN_00111e00(&local_a8,&local_a0,&local_c8);" (call_expression "FUN_00111e00(&local_a8,&local_a0,&local_c8)" identifier (argument_list "(&local_a8,&local_a0,&local_c8)" ( (pointer_expression "&local_a8" & identifier) , (pointer_expression "&local_a0" & identifier) , (pointer_expression "&local_c8" & identifier) ))) ;) })) (labeled_statement "LAB_00114536:\n  uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2;" statement_identifier : (expression_statement "uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2;" (assignment_expression "uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2" identifier = (binary_expression "(uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2" (call_expression "(uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0)" ( (binary_expression "(local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0" (parenthesized_expression "(local_88._0_8_ & *(ulong *)(param_2 + 0x230))" ( (binary_expression "local_88._0_8_ & *(ulong *)(param_2 + 0x230)" (field_expression "local_88._0_8_" identifier . field_identifier) & (pointer_expression "*(ulong *)(param_2 + 0x230)" * (cast_expression "(ulong *)(param_2 + 0x230)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x230)" ( (binary_expression "param_2 + 0x230" identifier + number_literal) ))))) )) != number_literal) ))) << number_literal)) ;)) (if_statement "if ((local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0) {\n    uVar23 = uVar23 | 2;\n  }" if (parenthesized_expression "((local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0)" ( (binary_expression "(local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0" (parenthesized_expression "(local_88._0_8_ & *(ulong *)(param_2 + 0x210))" ( (binary_expression "local_88._0_8_ & *(ulong *)(param_2 + 0x210)" (field_expression "local_88._0_8_" identifier . field_identifier) & (pointer_expression "*(ulong *)(param_2 + 0x210)" * (cast_expression "(ulong *)(param_2 + 0x210)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x210)" ( (binary_expression "param_2 + 0x210" identifier + number_literal) ))))) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 2;\n  }" { (expression_statement "uVar23 = uVar23 | 2;" (assignment_expression "uVar23 = uVar23 | 2" identifier = (binary_expression "uVar23 | 2" identifier | number_literal)) ;) })) (if_statement "if ((~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }" if (parenthesized_expression "((~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0)" ( (binary_expression "(~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0" (parenthesized_expression "(~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_)" ( (binary_expression "~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_" (unary_expression "~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210))" ~ (parenthesized_expression "(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210))" ( (binary_expression "*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)" (pointer_expression "*(ulong *)(param_2 + 0x230)" * (cast_expression "(ulong *)(param_2 + 0x230)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x230)" ( (binary_expression "param_2 + 0x230" identifier + number_literal) )))) | (pointer_expression "*(ulong *)(param_2 + 0x210)" * (cast_expression "(ulong *)(param_2 + 0x210)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x210)" ( (binary_expression "param_2 + 0x210" identifier + number_literal) ))))) ))) & (field_expression "local_88._0_8_" identifier . field_identifier)) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 1;\n  }" { (expression_statement "uVar23 = uVar23 | 1;" (assignment_expression "uVar23 = uVar23 | 1" identifier = (binary_expression "uVar23 | 1" identifier | number_literal)) ;) })) (if_statement "if ((local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0) {\n    uVar23 = uVar23 | 4;\n  }" if (parenthesized_expression "((local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0)" ( (binary_expression "(local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0" (parenthesized_expression "(local_88._8_8_ & *(ulong *)(param_2 + 0x238))" ( (binary_expression "local_88._8_8_ & *(ulong *)(param_2 + 0x238)" (field_expression "local_88._8_8_" identifier . field_identifier) & (pointer_expression "*(ulong *)(param_2 + 0x238)" * (cast_expression "(ulong *)(param_2 + 0x238)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x238)" ( (binary_expression "param_2 + 0x238" identifier + number_literal) ))))) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 4;\n  }" { (expression_statement "uVar23 = uVar23 | 4;" (assignment_expression "uVar23 = uVar23 | 4" identifier = (binary_expression "uVar23 | 4" identifier | number_literal)) ;) })) (if_statement "if ((local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0) {\n    uVar23 = uVar23 | 2;\n  }" if (parenthesized_expression "((local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0)" ( (binary_expression "(local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0" (parenthesized_expression "(local_88._8_8_ & *(ulong *)(param_2 + 0x218))" ( (binary_expression "local_88._8_8_ & *(ulong *)(param_2 + 0x218)" (field_expression "local_88._8_8_" identifier . field_identifier) & (pointer_expression "*(ulong *)(param_2 + 0x218)" * (cast_expression "(ulong *)(param_2 + 0x218)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x218)" ( (binary_expression "param_2 + 0x218" identifier + number_literal) ))))) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 2;\n  }" { (expression_statement "uVar23 = uVar23 | 2;" (assignment_expression "uVar23 = uVar23 | 2" identifier = (binary_expression "uVar23 | 2" identifier | number_literal)) ;) })) (if_statement "if ((~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }" if (parenthesized_expression "((~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0)" ( (binary_expression "(~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0" (parenthesized_expression "(~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_)" ( (binary_expression "~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_" (unary_expression "~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218))" ~ (parenthesized_expression "(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218))" ( (binary_expression "*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)" (pointer_expression "*(ulong *)(param_2 + 0x238)" * (cast_expression "(ulong *)(param_2 + 0x238)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x238)" ( (binary_expression "param_2 + 0x238" identifier + number_literal) )))) | (pointer_expression "*(ulong *)(param_2 + 0x218)" * (cast_expression "(ulong *)(param_2 + 0x218)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x218)" ( (binary_expression "param_2 + 0x218" identifier + number_literal) ))))) ))) & (field_expression "local_88._8_8_" identifier . field_identifier)) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 1;\n  }" { (expression_statement "uVar23 = uVar23 | 1;" (assignment_expression "uVar23 = uVar23 | 1" identifier = (binary_expression "uVar23 | 1" identifier | number_literal)) ;) })) (if_statement "if ((*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }" if (parenthesized_expression "((*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0)" ( (binary_expression "(*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0" (parenthesized_expression "(*(ulong *)(param_2 + 0x240) & local_78._0_8_)" ( (binary_expression "*(ulong *)(param_2 + 0x240) & local_78._0_8_" (pointer_expression "*(ulong *)(param_2 + 0x240)" * (cast_expression "(ulong *)(param_2 + 0x240)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x240)" ( (binary_expression "param_2 + 0x240" identifier + number_literal) )))) & (field_expression "local_78._0_8_" identifier . field_identifier)) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 4;\n  }" { (expression_statement "uVar23 = uVar23 | 4;" (assignment_expression "uVar23 = uVar23 | 4" identifier = (binary_expression "uVar23 | 4" identifier | number_literal)) ;) })) (if_statement "if ((*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 2;\n  }" if (parenthesized_expression "((*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0)" ( (binary_expression "(*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0" (parenthesized_expression "(*(ulong *)(param_2 + 0x220) & local_78._0_8_)" ( (binary_expression "*(ulong *)(param_2 + 0x220) & local_78._0_8_" (pointer_expression "*(ulong *)(param_2 + 0x220)" * (cast_expression "(ulong *)(param_2 + 0x220)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x220)" ( (binary_expression "param_2 + 0x220" identifier + number_literal) )))) & (field_expression "local_78._0_8_" identifier . field_identifier)) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 2;\n  }" { (expression_statement "uVar23 = uVar23 | 2;" (assignment_expression "uVar23 = uVar23 | 2" identifier = (binary_expression "uVar23 | 2" identifier | number_literal)) ;) })) (if_statement "if ((~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }" if (parenthesized_expression "((~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0)" ( (binary_expression "(~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0" (parenthesized_expression "(~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_)" ( (binary_expression "~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_" (unary_expression "~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240))" ~ (parenthesized_expression "(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240))" ( (binary_expression "*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)" (pointer_expression "*(ulong *)(param_2 + 0x220)" * (cast_expression "(ulong *)(param_2 + 0x220)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x220)" ( (binary_expression "param_2 + 0x220" identifier + number_literal) )))) | (pointer_expression "*(ulong *)(param_2 + 0x240)" * (cast_expression "(ulong *)(param_2 + 0x240)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x240)" ( (binary_expression "param_2 + 0x240" identifier + number_literal) ))))) ))) & (field_expression "local_78._0_8_" identifier . field_identifier)) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 1;\n  }" { (expression_statement "uVar23 = uVar23 | 1;" (assignment_expression "uVar23 = uVar23 | 1" identifier = (binary_expression "uVar23 | 1" identifier | number_literal)) ;) })) (if_statement "if ((*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }" if (parenthesized_expression "((*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0)" ( (binary_expression "(*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0" (parenthesized_expression "(*(ulong *)(param_2 + 0x248) & local_78._8_8_)" ( (binary_expression "*(ulong *)(param_2 + 0x248) & local_78._8_8_" (pointer_expression "*(ulong *)(param_2 + 0x248)" * (cast_expression "(ulong *)(param_2 + 0x248)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x248)" ( (binary_expression "param_2 + 0x248" identifier + number_literal) )))) & (field_expression "local_78._8_8_" identifier . field_identifier)) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 4;\n  }" { (expression_statement "uVar23 = uVar23 | 4;" (assignment_expression "uVar23 = uVar23 | 4" identifier = (binary_expression "uVar23 | 4" identifier | number_literal)) ;) })) (if_statement "if ((local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0) {\n    uVar23 = uVar23 | 2;\n  }" if (parenthesized_expression "((local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0)" ( (binary_expression "(local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0" (parenthesized_expression "(local_78._8_8_ & *(ulong *)(param_2 + 0x228))" ( (binary_expression "local_78._8_8_ & *(ulong *)(param_2 + 0x228)" (field_expression "local_78._8_8_" identifier . field_identifier) & (pointer_expression "*(ulong *)(param_2 + 0x228)" * (cast_expression "(ulong *)(param_2 + 0x228)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x228)" ( (binary_expression "param_2 + 0x228" identifier + number_literal) ))))) )) != number_literal) )) (compound_statement "{\n    uVar23 = uVar23 | 2;\n  }" { (expression_statement "uVar23 = uVar23 | 2;" (assignment_expression "uVar23 = uVar23 | 2" identifier = (binary_expression "uVar23 | 2" identifier | number_literal)) ;) })) (if_statement "if ((~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0) {\n    if (local_c0 != 0) goto LAB_0011464f;\n    if (uVar23 != 0) goto LAB_00114c0f;\n    lVar21 = -1;\n    lVar7 = -1;\n    lVar8 = lVar21;\n  }\n  else {\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }" if (parenthesized_expression "((~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0)" ( (binary_expression "(~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0" (parenthesized_expression "(~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_)" ( (binary_expression "~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_" (unary_expression "~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228))" ~ (parenthesized_expression "(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228))" ( (binary_expression "*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)" (pointer_expression "*(ulong *)(param_2 + 0x248)" * (cast_expression "(ulong *)(param_2 + 0x248)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x248)" ( (binary_expression "param_2 + 0x248" identifier + number_literal) )))) | (pointer_expression "*(ulong *)(param_2 + 0x228)" * (cast_expression "(ulong *)(param_2 + 0x228)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x228)" ( (binary_expression "param_2 + 0x228" identifier + number_literal) ))))) ))) & (field_expression "local_78._8_8_" identifier . field_identifier)) )) == number_literal) )) (compound_statement "{\n    if (local_c0 != 0) goto LAB_0011464f;\n    if (uVar23 != 0) goto LAB_00114c0f;\n    lVar21 = -1;\n    lVar7 = -1;\n    lVar8 = lVar21;\n  }" { (if_statement "if (local_c0 != 0) goto LAB_0011464f;" if (parenthesized_expression "(local_c0 != 0)" ( (binary_expression "local_c0 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0011464f;" goto statement_identifier ;)) (if_statement "if (uVar23 != 0) goto LAB_00114c0f;" if (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00114c0f;" goto statement_identifier ;)) (expression_statement "lVar21 = -1;" (assignment_expression "lVar21 = -1" identifier = number_literal) ;) (expression_statement "lVar7 = -1;" (assignment_expression "lVar7 = -1" identifier = number_literal) ;) (expression_statement "lVar8 = lVar21;" (assignment_expression "lVar8 = lVar21" identifier = identifier) ;) }) (else_clause "else {\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }" else (compound_statement "{\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }" { (expression_statement "uVar23 = uVar23 | 1;" (assignment_expression "uVar23 = uVar23 | 1" identifier = (binary_expression "uVar23 | 1" identifier | number_literal)) ;) (if_statement "if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }" if (parenthesized_expression "(local_c0 == 0)" ( (binary_expression "local_c0 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }" { (labeled_statement "LAB_00114c0f:\n      uVar33 = 0;" statement_identifier : (expression_statement "uVar33 = 0;" (assignment_expression "uVar33 = 0" identifier = number_literal) ;)) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (expression_statement "uVar19 = 7;" (assignment_expression "uVar19 = 7" identifier = number_literal) ;) (labeled_statement "LAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);" statement_identifier : (expression_statement "lVar8 = FUN_00112550(param_2,&local_c8,uVar19);" (assignment_expression "lVar8 = FUN_00112550(param_2,&local_c8,uVar19)" identifier = (call_expression "FUN_00112550(param_2,&local_c8,uVar19)" identifier (argument_list "(param_2,&local_c8,uVar19)" ( identifier , (pointer_expression "&local_c8" & identifier) , identifier )))) ;)) }) (else_clause "else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }" else (compound_statement "{\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }" { (labeled_statement "LAB_0011464f:\n      uVar19 = 0;" statement_identifier : (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;)) (expression_statement "plVar15 = local_c8;" (assignment_expression "plVar15 = local_c8" identifier = identifier) ;) (do_statement "do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);" do (compound_statement "{\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      }" { (expression_statement "lVar8 = *plVar15;" (assignment_expression "lVar8 = *plVar15" identifier = (pointer_expression "*plVar15" * identifier)) ;) (expression_statement "plVar15 = plVar15 + 2;" (assignment_expression "plVar15 = plVar15 + 2" identifier = (binary_expression "plVar15 + 2" identifier + number_literal)) ;) (expression_statement "uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);" (assignment_expression "uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4)" identifier = (binary_expression "uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4)" identifier | (pointer_expression "*(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4)" * (cast_expression "(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x388) + lVar8 * 4)" ( (binary_expression "*(long *)(param_2 + 0x388) + lVar8 * 4" (pointer_expression "*(long *)(param_2 + 0x388)" * (cast_expression "(long *)(param_2 + 0x388)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x388)" ( (binary_expression "param_2 + 0x388" identifier + number_literal) )))) + (binary_expression "lVar8 * 4" identifier * number_literal)) )))))) ;) }) while (parenthesized_expression "(local_c8 + local_c0 * 2 != plVar15)" ( (binary_expression "local_c8 + local_c0 * 2 != plVar15" (binary_expression "local_c8 + local_c0 * 2" identifier + (binary_expression "local_c0 * 2" identifier * number_literal)) != identifier) )) ;) (expression_statement "lVar8 = -1;" (assignment_expression "lVar8 = -1" identifier = number_literal) ;) (expression_statement "uVar33 = uVar19 & uVar23 & 2;" (assignment_expression "uVar33 = uVar19 & uVar23 & 2" identifier = (binary_expression "uVar19 & uVar23 & 2" (binary_expression "uVar19 & uVar23" identifier & identifier) & number_literal)) ;) (expression_statement "uVar31 = uVar19 & uVar23 & 4;" (assignment_expression "uVar31 = uVar19 & uVar23 & 4" identifier = (binary_expression "uVar19 & uVar23 & 4" (binary_expression "uVar19 & uVar23" identifier & identifier) & number_literal)) ;) (if_statement "if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }" if (parenthesized_expression "((~uVar19 & uVar23) != 0)" ( (binary_expression "(~uVar19 & uVar23) != 0" (parenthesized_expression "(~uVar19 & uVar23)" ( (binary_expression "~uVar19 & uVar23" (unary_expression "~uVar19" ~ identifier) & identifier) )) != number_literal) )) (compound_statement "{\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }" { (expression_statement "uVar19 = uVar19 ^ 7;" (assignment_expression "uVar19 = uVar19 ^ 7" identifier = (binary_expression "uVar19 ^ 7" identifier ^ number_literal)) ;) (goto_statement "goto LAB_00114bf3;" goto statement_identifier ;) })) }))) (expression_statement "lVar21 = lVar8;" (assignment_expression "lVar21 = lVar8" identifier = identifier) ;) (if_statement "if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }" if (parenthesized_expression "(uVar31 != 0)" ( (binary_expression "uVar31 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }" { (expression_statement "lVar21 = FUN_00112550(param_2,&local_c8,4);" (assignment_expression "lVar21 = FUN_00112550(param_2,&local_c8,4)" identifier = (call_expression "FUN_00112550(param_2,&local_c8,4)" identifier (argument_list "(param_2,&local_c8,4)" ( identifier , (pointer_expression "&local_c8" & identifier) , number_literal )))) ;) })) (expression_statement "lVar7 = lVar8;" (assignment_expression "lVar7 = lVar8" identifier = identifier) ;) (if_statement "if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }" if (parenthesized_expression "(uVar33 != 0)" ( (binary_expression "uVar33 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }" { (expression_statement "lVar7 = FUN_00112550(param_2,&local_c8,2);" (assignment_expression "lVar7 = FUN_00112550(param_2,&local_c8,2)" identifier = (call_expression "FUN_00112550(param_2,&local_c8,2)" identifier (argument_list "(param_2,&local_c8,2)" ( identifier , (pointer_expression "&local_c8" & identifier) , number_literal )))) ;) })) }))) (expression_statement "FUN_00111ef0(param_2);" (call_expression "FUN_00111ef0(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (labeled_statement "LAB_001146d6:\n  uVar13 = 0;" statement_identifier : (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;)) (do_statement "do {\n    while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }\n    cVar1 = *(char *)(param_2 + 0xc + uVar13);\n    if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar13] = lVar7;\n    uVar13 = uVar13 + 1;\n  } while (uVar13 != 0x100);" do (compound_statement "{\n    while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }\n    cVar1 = *(char *)(param_2 + 0xc + uVar13);\n    if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar13] = lVar7;\n    uVar13 = uVar13 + 1;\n  }" { (while_statement "while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }" while (parenthesized_expression "((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0)" ( (binary_expression "(*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0" (parenthesized_expression "(*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1)" ( (binary_expression "*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1" (binary_expression "*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f)" (pointer_expression "*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8)" * (cast_expression "(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8)" ( (binary_expression "local_88 + (uVar13 >> 6 & 0x3ffffff) * 8" identifier + (binary_expression "(uVar13 >> 6 & 0x3ffffff) * 8" (parenthesized_expression "(uVar13 >> 6 & 0x3ffffff)" ( (binary_expression "uVar13 >> 6 & 0x3ffffff" (binary_expression "uVar13 >> 6" identifier >> number_literal) & number_literal) )) * number_literal)) )))) >> (parenthesized_expression "(uVar13 & 0x3f)" ( (binary_expression "uVar13 & 0x3f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }" { (labeled_statement "LAB_001146ed:\n      uVar13 = uVar13 + 1;" statement_identifier : (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;)) (if_statement "if (uVar13 == 0x100) goto LAB_00114728;" if (parenthesized_expression "(uVar13 == 0x100)" ( (binary_expression "uVar13 == 0x100" identifier == number_literal) )) (goto_statement "goto LAB_00114728;" goto statement_identifier ;)) })) (expression_statement "cVar1 = *(char *)(param_2 + 0xc + uVar13);" (assignment_expression "cVar1 = *(char *)(param_2 + 0xc + uVar13)" identifier = (pointer_expression "*(char *)(param_2 + 0xc + uVar13)" * (cast_expression "(char *)(param_2 + 0xc + uVar13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc + uVar13)" ( (binary_expression "param_2 + 0xc + uVar13" (binary_expression "param_2 + 0xc" identifier + number_literal) + identifier) ))))) ;) (if_statement "if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }" if (parenthesized_expression "(cVar1 != '\x02')" ( (binary_expression "cVar1 != '\x02'" identifier != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }" { (expression_statement "lVar26 = lVar21;" (assignment_expression "lVar26 = lVar21" identifier = identifier) ;) (if_statement "if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }" if (parenthesized_expression "(cVar1 != '\x04')" ( (binary_expression "cVar1 != '\x04'" identifier != (char_literal "'\x04'" ' escape_sequence ')) )) (compound_statement "{\n        lVar26 = lVar8;\n      }" { (expression_statement "lVar26 = lVar8;" (assignment_expression "lVar26 = lVar8" identifier = identifier) ;) })) (expression_statement "local_e0[uVar13] = lVar26;" (assignment_expression "local_e0[uVar13] = lVar26" (subscript_expression "local_e0[uVar13]" identifier [ identifier ]) = identifier) ;) (goto_statement "goto LAB_001146ed;" goto statement_identifier ;) })) (expression_statement "local_e0[uVar13] = lVar7;" (assignment_expression "local_e0[uVar13] = lVar7" (subscript_expression "local_e0[uVar13]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 != 0x100)" ( (binary_expression "uVar13 != 0x100" identifier != number_literal) )) ;) (labeled_statement "LAB_00114728:\n  free(local_c8);" statement_identifier : (expression_statement "free(local_c8);" (call_expression "free(local_c8)" identifier (argument_list "(local_c8)" ( identifier ))) ;)) (expression_statement "free(__src);" (call_expression "free(__src)" identifier (argument_list "(__src)" ( identifier ))) ;) (expression_statement "free(local_a8);" (call_expression "free(local_a8)" identifier (argument_list "(local_a8)" ( identifier ))) ;) (expression_statement "bVar18 = *(byte *)(param_2 + 0xb);" (assignment_expression "bVar18 = *(byte *)(param_2 + 0xb)" identifier = (pointer_expression "*(byte *)(param_2 + 0xb)" * (cast_expression "(byte *)(param_2 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xb)" ( (binary_expression "param_2 + 0xb" identifier + number_literal) ))))) ;) (if_statement "if ((*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0) {\n    *(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];\n    local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;\n  }" if (parenthesized_expression "((*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0)" ( (binary_expression "(*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0" (parenthesized_expression "(*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1)" ( (binary_expression "*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1" (binary_expression "*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f)" (pointer_expression "*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8)" * (cast_expression "(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_88 + (ulong)(bVar18 >> 6) * 8)" ( (binary_expression "local_88 + (ulong)(bVar18 >> 6) * 8" identifier + (binary_expression "(ulong)(bVar18 >> 6) * 8" (call_expression "(ulong)(bVar18 >> 6)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar18 >> 6)" ( (binary_expression "bVar18 >> 6" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar18 & 0x3f)" ( (binary_expression "bVar18 & 0x3f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n    *(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];\n    local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;\n  }" { (expression_statement "*(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];" (assignment_expression "*(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18]" (pointer_expression "*(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8)" * (cast_expression "(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x3b8) + param_1 * 8)" ( (binary_expression "*(long *)(param_2 + 0x3b8) + param_1 * 8" (pointer_expression "*(long *)(param_2 + 0x3b8)" * (cast_expression "(long *)(param_2 + 0x3b8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3b8)" ( (binary_expression "param_2 + 0x3b8" identifier + number_literal) )))) + (binary_expression "param_1 * 8" identifier * number_literal)) )))) = (subscript_expression "local_e0[bVar18]" identifier [ identifier ])) ;) (expression_statement "local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;" (assignment_expression "local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff" (subscript_expression "local_e0[*(byte *)(param_2 + 0xb)]" identifier [ (pointer_expression "*(byte *)(param_2 + 0xb)" * (cast_expression "(byte *)(param_2 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xb)" ( (binary_expression "param_2 + 0xb" identifier + number_literal) )))) ]) = number_literal) ;) })) (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" { (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return local_e0[param_3];" return (subscript_expression "local_e0[param_3]" identifier [ identifier ]) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (subscript_expression (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) [ LIT ]) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * 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 { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (compound_statement { (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 + (binary_expression IDENT * 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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 + (binary_expression IDENT * LIT)) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (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) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) & (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (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) ) IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) & (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT & LIT) & (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_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 (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT << LIT) ))) < LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) != LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT <= IDENT) && (binary_expression IDENT != IDENT)) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_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 (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) | IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (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 = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) <= IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) >> LIT) )) + IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) >> LIT) , IDENT ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT * LIT)) , (binary_expression (call_expression IDENT (argument_list ( IDENT ))) != (binary_expression (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) ))) * (call_expression IDENT (argument_list ( LIT )))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (call_expression IDENT (argument_list ( IDENT , LIT ))) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT * LIT)) , (binary_expression (call_expression IDENT (argument_list ( IDENT ))) != (binary_expression (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) ))) * (call_expression IDENT (argument_list ( LIT )))))) )))) )) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) , IDENT , (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) * LIT) ))) ;) })) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (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 IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) * LIT)) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (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 = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }))) (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 (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT << LIT) ))) < LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) != LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator *) )) [ LIT ])) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) & LIT)) ;) (if_statement if (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) )))) & IDENT) & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = 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) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator *) )) [ LIT ])) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator *) )) [ LIT ])) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) & IDENT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != 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 (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + IDENT) ))))) ;)) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) & (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (field_expression IDENT . field_identifier) & (unary_expression ~ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (field_expression IDENT . field_identifier) & (unary_expression ~ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (field_expression IDENT . field_identifier) & (unary_expression ~ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (field_expression IDENT . field_identifier) & (unary_expression ~ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) & (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & (unary_expression ~ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & (unary_expression ~ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & (unary_expression ~ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & (unary_expression ~ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT & IDENT) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) && (binary_expression IDENT == LIT)) )) && (binary_expression IDENT == LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) & IDENT) )) != LIT) )) (goto_statement goto statement_identifier ;)) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) & IDENT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (binary_expression (unary_expression ~ IDENT) & (field_expression IDENT . field_identifier))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (binary_expression (unary_expression ~ IDENT) & (field_expression IDENT . field_identifier))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator [ LIT ])) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator [ LIT ])) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) * LIT)) )))) = (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;)) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (binary_expression IDENT & (field_expression IDENT . field_identifier))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (binary_expression IDENT & (field_expression IDENT . field_identifier))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) >> LIT) )) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) >> LIT) , IDENT ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT * LIT)) , (binary_expression (call_expression IDENT (argument_list ( IDENT ))) != (binary_expression (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) ))) * (call_expression IDENT (argument_list ( LIT )))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (call_expression IDENT (argument_list ( IDENT , LIT ))) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT * LIT)) , (binary_expression (call_expression IDENT (argument_list ( IDENT ))) != (binary_expression (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) ))) * (call_expression IDENT (argument_list ( LIT )))))) )))) )) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement 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 != IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT << LIT) ))) < LIT) || (binary_expression (binary_expression IDENT >> LIT) != LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (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 = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) }))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (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 = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (subscript_expression IDENT [ (binary_expression IDENT * LIT) ])) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , LIT , (pointer_expression & IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) != LIT) ))) << LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) & (field_expression IDENT . field_identifier)) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) & (field_expression IDENT . field_identifier)) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & (field_expression IDENT . field_identifier)) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & (field_expression IDENT . field_identifier)) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) & (field_expression IDENT . field_identifier)) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & (field_expression IDENT . field_identifier)) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) & (field_expression IDENT . field_identifier)) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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 = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , IDENT )))) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))))) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & IDENT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) & IDENT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ LIT)) ;) (goto_statement goto statement_identifier ;) })) }))) (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 ( IDENT , (pointer_expression & IDENT) , LIT )))) ;) })) (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 ( IDENT , (pointer_expression & IDENT) , LIT )))) ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (do_statement do (compound_statement { (while_statement while (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 + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) & LIT) )) * LIT)) )))) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (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 (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) * LIT)) )))) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ]) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return (subscript_expression IDENT [ IDENT ]) ;) })))
(function_definition "undefined8 FUN_00113e20(long param_1,long param_2,byte param_3)\n\n{\n  char cVar1;\n  byte bVar2;\n  ushort uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  long lVar7;\n  long lVar8;\n  byte *pbVar9;\n  ulong *__src;\n  ulong *puVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong uVar13;\n  undefined1 (*pauVar14) [16];\n  long *plVar15;\n  undefined8 uVar16;\n  undefined8 *puVar17;\n  byte bVar18;\n  uint uVar19;\n  ulong *puVar20;\n  long lVar21;\n  ulong uVar22;\n  uint uVar23;\n  int iVar24;\n  long lVar25;\n  long lVar26;\n  ulong uVar27;\n  long lVar28;\n  ulong uVar29;\n  ulong uVar30;\n  uint uVar31;\n  ulong uVar32;\n  uint uVar33;\n  long in_FS_OFFSET;\n  undefined1 auVar34 [16];\n  undefined1 auVar35 [16];\n  ulong local_100;\n  long local_f8;\n  undefined8 *local_e0;\n  long *local_c8;\n  long local_c0;\n  ulong local_b8;\n  void *local_a8;\n  undefined8 local_a0;\n  ulong local_98;\n  undefined1 local_88 [16];\n  undefined1 local_78 [16];\n  undefined1 local_68 [16];\n  undefined1 local_58 [16];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar7 = param_1 * 0x50;\n  lVar8 = *(long *)(param_2 + 0x3a0);\n  lVar21 = lVar8;\n  if (*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0) {\n    lVar21 = *(long *)(param_2 + 0x3a8);\n  }\n  plVar15 = (long *)(lVar21 + param_1 * 8);\n  local_e0 = (undefined8 *)*plVar15;\n  if (local_e0 == (undefined8 *)0x0) {\n    if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }\n    *(int *)(param_2 + 0x398) = iVar24;\n    local_e0 = (undefined8 *)FUN_00120ce0(0x800);\n    uVar5 = _UNK_00128298;\n    uVar4 = _DAT_00128290;\n    *plVar15 = (long)local_e0;\n    puVar17 = local_e0;\n    do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);\n  }\n  *(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1) = 0;\n  lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n  bVar18 = *(byte *)(lVar8 + 0x20);\n  uVar3 = *(ushort *)(lVar8 + 0x22);\n  uVar23 = (uint)uVar3;\n  if (((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);\n    *pbVar9 = *pbVar9 | 4;\n    lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar3 = *(ushort *)(lVar8 + 0x22);\n    uVar23 = (uint)uVar3;\n  }\n  if (((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 2;\n    lVar8 = lVar7 + *(long *)(param_2 + 0x358);\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar23 = (uint)*(ushort *)(lVar8 + 0x22);\n  }\n  if ((uVar23 & 7 & (uint)bVar18) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 1;\n  }\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) {\nLAB_00114c1c:\n                    \n    FUN_00120e70();\n  }\n  __src = (ulong *)FUN_00120ce0();\n  local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n  uVar22 = *(ulong *)(local_f8 + 0x10);\n  if (uVar22 == 0) {\n    lVar8 = 0;\n  }\n  else {\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) goto LAB_00114c1c;\n  local_c8 = (long *)FUN_00120ce0();\n  local_88._8_4_ = 0xffffffff;\n  local_88._0_8_ = 0xffffffffffffffff;\n  local_88._12_4_ = 0xffffffff;\n  local_c0 = 0;\n  local_78 = local_88;\n  local_b8 = uVar13;\n  if (lVar8 != 0) {\n    lVar21 = 0;\n    uVar23 = (uint)(param_3 >> 6);\n    uVar13 = 1L << (param_3 & 0x3f);\n    puVar10 = __src;\n    do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);\n  }\nLAB_001144c5:\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if ((long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0) goto LAB_00114c1c;\n  local_a8 = (void *)FUN_00120ce0();\n  local_a0 = 0;\n  local_98 = uVar13;\n  if (local_c0 < 1) {\n    if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }\n    goto LAB_001146d6;\n  }\n  if (*(char *)(param_2 + 0x378) != '\0') {\n    if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }\n    FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);\n    FUN_00111e00(&local_a8,&local_a0,&local_c8);\n  }\nLAB_00114536:\n  uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2;\n  if ((local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0) {\n    if (local_c0 != 0) goto LAB_0011464f;\n    if (uVar23 != 0) goto LAB_00114c0f;\n    lVar21 = -1;\n    lVar7 = -1;\n    lVar8 = lVar21;\n  }\n  else {\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }\n  FUN_00111ef0(param_2);\nLAB_001146d6:\n  uVar13 = 0;\n  do {\n    while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }\n    cVar1 = *(char *)(param_2 + 0xc + uVar13);\n    if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar13] = lVar7;\n    uVar13 = uVar13 + 1;\n  } while (uVar13 != 0x100);\nLAB_00114728:\n  free(local_c8);\n  free(__src);\n  free(local_a8);\n  bVar18 = *(byte *)(param_2 + 0xb);\n  if ((*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0) {\n    *(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];\n    local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return local_e0[param_3];\n}" (type_identifier "undefined8") (function_declarator "FUN_00113e20(long param_1,long param_2,byte param_3)" (identifier "FUN_00113e20") (parameter_list "(long param_1,long param_2,byte param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "byte param_3" (type_identifier "byte") (identifier "param_3")) () ")"))) (compound_statement "{\n  char cVar1;\n  byte bVar2;\n  ushort uVar3;\n  undefined8 uVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  long lVar7;\n  long lVar8;\n  byte *pbVar9;\n  ulong *__src;\n  ulong *puVar10;\n  long lVar11;\n  ulong uVar12;\n  ulong uVar13;\n  undefined1 (*pauVar14) [16];\n  long *plVar15;\n  undefined8 uVar16;\n  undefined8 *puVar17;\n  byte bVar18;\n  uint uVar19;\n  ulong *puVar20;\n  long lVar21;\n  ulong uVar22;\n  uint uVar23;\n  int iVar24;\n  long lVar25;\n  long lVar26;\n  ulong uVar27;\n  long lVar28;\n  ulong uVar29;\n  ulong uVar30;\n  uint uVar31;\n  ulong uVar32;\n  uint uVar33;\n  long in_FS_OFFSET;\n  undefined1 auVar34 [16];\n  undefined1 auVar35 [16];\n  ulong local_100;\n  long local_f8;\n  undefined8 *local_e0;\n  long *local_c8;\n  long local_c0;\n  ulong local_b8;\n  void *local_a8;\n  undefined8 local_a0;\n  ulong local_98;\n  undefined1 local_88 [16];\n  undefined1 local_78 [16];\n  undefined1 local_68 [16];\n  undefined1 local_58 [16];\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  lVar7 = param_1 * 0x50;\n  lVar8 = *(long *)(param_2 + 0x3a0);\n  lVar21 = lVar8;\n  if (*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0) {\n    lVar21 = *(long *)(param_2 + 0x3a8);\n  }\n  plVar15 = (long *)(lVar21 + param_1 * 8);\n  local_e0 = (undefined8 *)*plVar15;\n  if (local_e0 == (undefined8 *)0x0) {\n    if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }\n    *(int *)(param_2 + 0x398) = iVar24;\n    local_e0 = (undefined8 *)FUN_00120ce0(0x800);\n    uVar5 = _UNK_00128298;\n    uVar4 = _DAT_00128290;\n    *plVar15 = (long)local_e0;\n    puVar17 = local_e0;\n    do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);\n  }\n  *(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1) = 0;\n  lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n  bVar18 = *(byte *)(lVar8 + 0x20);\n  uVar3 = *(ushort *)(lVar8 + 0x22);\n  uVar23 = (uint)uVar3;\n  if (((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);\n    *pbVar9 = *pbVar9 | 4;\n    lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar3 = *(ushort *)(lVar8 + 0x22);\n    uVar23 = (uint)uVar3;\n  }\n  if (((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 2;\n    lVar8 = lVar7 + *(long *)(param_2 + 0x358);\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar23 = (uint)*(ushort *)(lVar8 + 0x22);\n  }\n  if ((uVar23 & 7 & (uint)bVar18) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 1;\n  }\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) {\nLAB_00114c1c:\n                    \n    FUN_00120e70();\n  }\n  __src = (ulong *)FUN_00120ce0();\n  local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n  uVar22 = *(ulong *)(local_f8 + 0x10);\n  if (uVar22 == 0) {\n    lVar8 = 0;\n  }\n  else {\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) goto LAB_00114c1c;\n  local_c8 = (long *)FUN_00120ce0();\n  local_88._8_4_ = 0xffffffff;\n  local_88._0_8_ = 0xffffffffffffffff;\n  local_88._12_4_ = 0xffffffff;\n  local_c0 = 0;\n  local_78 = local_88;\n  local_b8 = uVar13;\n  if (lVar8 != 0) {\n    lVar21 = 0;\n    uVar23 = (uint)(param_3 >> 6);\n    uVar13 = 1L << (param_3 & 0x3f);\n    puVar10 = __src;\n    do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);\n  }\nLAB_001144c5:\n  uVar13 = *(ulong *)(param_2 + 0x300);\n  if ((long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0) goto LAB_00114c1c;\n  local_a8 = (void *)FUN_00120ce0();\n  local_a0 = 0;\n  local_98 = uVar13;\n  if (local_c0 < 1) {\n    if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }\n    goto LAB_001146d6;\n  }\n  if (*(char *)(param_2 + 0x378) != '\0') {\n    if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }\n    FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);\n    FUN_00111e00(&local_a8,&local_a0,&local_c8);\n  }\nLAB_00114536:\n  uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2;\n  if ((local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }\n  if ((*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }\n  if ((local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0) {\n    uVar23 = uVar23 | 2;\n  }\n  if ((~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0) {\n    if (local_c0 != 0) goto LAB_0011464f;\n    if (uVar23 != 0) goto LAB_00114c0f;\n    lVar21 = -1;\n    lVar7 = -1;\n    lVar8 = lVar21;\n  }\n  else {\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }\n  FUN_00111ef0(param_2);\nLAB_001146d6:\n  uVar13 = 0;\n  do {\n    while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }\n    cVar1 = *(char *)(param_2 + 0xc + uVar13);\n    if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar13] = lVar7;\n    uVar13 = uVar13 + 1;\n  } while (uVar13 != 0x100);\nLAB_00114728:\n  free(local_c8);\n  free(__src);\n  free(local_a8);\n  bVar18 = *(byte *)(param_2 + 0xb);\n  if ((*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0) {\n    *(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];\n    local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return local_e0[param_3];\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "ushort uVar3;" (type_identifier "ushort") (identifier "uVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "ulong *__src;" (type_identifier "ulong") (pointer_declarator "*__src" (* "*") (identifier "__src")) (; ";")) (declaration "ulong *puVar10;" (type_identifier "ulong") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "long lVar11;" (sized_type_specifier "long" (long "long")) (identifier "lVar11") (; ";")) (declaration "ulong uVar12;" (type_identifier "ulong") (identifier "uVar12") (; ";")) (declaration "ulong uVar13;" (type_identifier "ulong") (identifier "uVar13") (; ";")) (expression_statement "undefined1 (*pauVar14) [16];" (subscript_expression "undefined1 (*pauVar14) [16]" (call_expression "undefined1 (*pauVar14)" (identifier "undefined1") (argument_list "(*pauVar14)" (( "(") (pointer_expression "*pauVar14" (* "*") (identifier "pauVar14")) () ")"))) ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "long *plVar15;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar15" (* "*") (identifier "plVar15")) (; ";")) (declaration "undefined8 uVar16;" (type_identifier "undefined8") (identifier "uVar16") (; ";")) (declaration "undefined8 *puVar17;" (type_identifier "undefined8") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "byte bVar18;" (type_identifier "byte") (identifier "bVar18") (; ";")) (declaration "uint uVar19;" (type_identifier "uint") (identifier "uVar19") (; ";")) (declaration "ulong *puVar20;" (type_identifier "ulong") (pointer_declarator "*puVar20" (* "*") (identifier "puVar20")) (; ";")) (declaration "long lVar21;" (sized_type_specifier "long" (long "long")) (identifier "lVar21") (; ";")) (declaration "ulong uVar22;" (type_identifier "ulong") (identifier "uVar22") (; ";")) (declaration "uint uVar23;" (type_identifier "uint") (identifier "uVar23") (; ";")) (declaration "int iVar24;" (primitive_type "int") (identifier "iVar24") (; ";")) (declaration "long lVar25;" (sized_type_specifier "long" (long "long")) (identifier "lVar25") (; ";")) (declaration "long lVar26;" (sized_type_specifier "long" (long "long")) (identifier "lVar26") (; ";")) (declaration "ulong uVar27;" (type_identifier "ulong") (identifier "uVar27") (; ";")) (declaration "long lVar28;" (sized_type_specifier "long" (long "long")) (identifier "lVar28") (; ";")) (declaration "ulong uVar29;" (type_identifier "ulong") (identifier "uVar29") (; ";")) (declaration "ulong uVar30;" (type_identifier "ulong") (identifier "uVar30") (; ";")) (declaration "uint uVar31;" (type_identifier "uint") (identifier "uVar31") (; ";")) (declaration "ulong uVar32;" (type_identifier "ulong") (identifier "uVar32") (; ";")) (declaration "uint uVar33;" (type_identifier "uint") (identifier "uVar33") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "undefined1 auVar34 [16];" (type_identifier "undefined1") (array_declarator "auVar34 [16]" (identifier "auVar34") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 auVar35 [16];" (type_identifier "undefined1") (array_declarator "auVar35 [16]" (identifier "auVar35") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "ulong local_100;" (type_identifier "ulong") (identifier "local_100") (; ";")) (declaration "long local_f8;" (sized_type_specifier "long" (long "long")) (identifier "local_f8") (; ";")) (declaration "undefined8 *local_e0;" (type_identifier "undefined8") (pointer_declarator "*local_e0" (* "*") (identifier "local_e0")) (; ";")) (declaration "long *local_c8;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_c8" (* "*") (identifier "local_c8")) (; ";")) (declaration "long local_c0;" (sized_type_specifier "long" (long "long")) (identifier "local_c0") (; ";")) (declaration "ulong local_b8;" (type_identifier "ulong") (identifier "local_b8") (; ";")) (declaration "void *local_a8;" (primitive_type "void") (pointer_declarator "*local_a8" (* "*") (identifier "local_a8")) (; ";")) (declaration "undefined8 local_a0;" (type_identifier "undefined8") (identifier "local_a0") (; ";")) (declaration "ulong local_98;" (type_identifier "ulong") (identifier "local_98") (; ";")) (declaration "undefined1 local_88 [16];" (type_identifier "undefined1") (array_declarator "local_88 [16]" (identifier "local_88") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 local_78 [16];" (type_identifier "undefined1") (array_declarator "local_78 [16]" (identifier "local_78") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 local_68 [16];" (type_identifier "undefined1") (array_declarator "local_68 [16]" (identifier "local_68") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 local_58 [16];" (type_identifier "undefined1") (array_declarator "local_58 [16]" (identifier "local_58") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "lVar7 = param_1 * 0x50;" (assignment_expression "lVar7 = param_1 * 0x50" (identifier "lVar7") (= "=") (binary_expression "param_1 * 0x50" (identifier "param_1") (* "*") (number_literal "0x50"))) (; ";")) (expression_statement "lVar8 = *(long *)(param_2 + 0x3a0);" (assignment_expression "lVar8 = *(long *)(param_2 + 0x3a0)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(param_2 + 0x3a0)" (* "*") (cast_expression "(long *)(param_2 + 0x3a0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3a0)" (( "(") (binary_expression "param_2 + 0x3a0" (identifier "param_2") (+ "+") (number_literal "0x3a0")) () ")"))))) (; ";")) (expression_statement "lVar21 = lVar8;" (assignment_expression "lVar21 = lVar8" (identifier "lVar21") (= "=") (identifier "lVar8")) (; ";")) (if_statement "if (*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0) {\n    lVar21 = *(long *)(param_2 + 0x3a8);\n  }" (if "if") (parenthesized_expression "(*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0)" (( "(") (binary_expression "*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0" (pointer_expression "*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7)" (* "*") (cast_expression "(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x358) + 0x22 + lVar7)" (( "(") (binary_expression "*(long *)(param_2 + 0x358) + 0x22 + lVar7" (binary_expression "*(long *)(param_2 + 0x358) + 0x22" (pointer_expression "*(long *)(param_2 + 0x358)" (* "*") (cast_expression "(long *)(param_2 + 0x358)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x358)" (( "(") (binary_expression "param_2 + 0x358" (identifier "param_2") (+ "+") (number_literal "0x358")) () ")")))) (+ "+") (number_literal "0x22")) (+ "+") (identifier "lVar7")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    lVar21 = *(long *)(param_2 + 0x3a8);\n  }" ({ "{") (expression_statement "lVar21 = *(long *)(param_2 + 0x3a8);" (assignment_expression "lVar21 = *(long *)(param_2 + 0x3a8)" (identifier "lVar21") (= "=") (pointer_expression "*(long *)(param_2 + 0x3a8)" (* "*") (cast_expression "(long *)(param_2 + 0x3a8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3a8)" (( "(") (binary_expression "param_2 + 0x3a8" (identifier "param_2") (+ "+") (number_literal "0x3a8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "plVar15 = (long *)(lVar21 + param_1 * 8);" (assignment_expression "plVar15 = (long *)(lVar21 + param_1 * 8)" (identifier "plVar15") (= "=") (cast_expression "(long *)(lVar21 + param_1 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar21 + param_1 * 8)" (( "(") (binary_expression "lVar21 + param_1 * 8" (identifier "lVar21") (+ "+") (binary_expression "param_1 * 8" (identifier "param_1") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "local_e0 = (undefined8 *)*plVar15;" (assignment_expression "local_e0 = (undefined8 *)*plVar15" (identifier "local_e0") (= "=") (cast_expression "(undefined8 *)*plVar15" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar15" (* "*") (identifier "plVar15")))) (; ";")) (if_statement "if (local_e0 == (undefined8 *)0x0) {\n    if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }\n    *(int *)(param_2 + 0x398) = iVar24;\n    local_e0 = (undefined8 *)FUN_00120ce0(0x800);\n    uVar5 = _UNK_00128298;\n    uVar4 = _DAT_00128290;\n    *plVar15 = (long)local_e0;\n    puVar17 = local_e0;\n    do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);\n  }" (if "if") (parenthesized_expression "(local_e0 == (undefined8 *)0x0)" (( "(") (binary_expression "local_e0 == (undefined8 *)0x0" (identifier "local_e0") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }\n    *(int *)(param_2 + 0x398) = iVar24;\n    local_e0 = (undefined8 *)FUN_00120ce0(0x800);\n    uVar5 = _UNK_00128298;\n    uVar4 = _DAT_00128290;\n    *plVar15 = (long)local_e0;\n    puVar17 = local_e0;\n    do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);\n  }" ({ "{") (if_statement "if (*(int *)(param_2 + 0x398) < 0x400) {\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }\n    else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_2 + 0x398) < 0x400)" (( "(") (binary_expression "*(int *)(param_2 + 0x398) < 0x400" (pointer_expression "*(int *)(param_2 + 0x398)" (* "*") (cast_expression "(int *)(param_2 + 0x398)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x398)" (( "(") (binary_expression "param_2 + 0x398" (identifier "param_2") (+ "+") (number_literal "0x398")) () ")")))) (< "<") (number_literal "0x400")) () ")")) (compound_statement "{\n      iVar24 = *(int *)(param_2 + 0x398) + 1;\n    }" ({ "{") (expression_statement "iVar24 = *(int *)(param_2 + 0x398) + 1;" (assignment_expression "iVar24 = *(int *)(param_2 + 0x398) + 1" (identifier "iVar24") (= "=") (binary_expression "*(int *)(param_2 + 0x398) + 1" (pointer_expression "*(int *)(param_2 + 0x398)" (* "*") (cast_expression "(int *)(param_2 + 0x398)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x398)" (( "(") (binary_expression "param_2 + 0x398" (identifier "param_2") (+ "+") (number_literal "0x398")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }" (else "else") (compound_statement "{\n      lVar21 = (long)*(int *)(param_2 + 0x39c);\n      if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }\n      iVar24 = 1;\n    }" ({ "{") (expression_statement "lVar21 = (long)*(int *)(param_2 + 0x39c);" (assignment_expression "lVar21 = (long)*(int *)(param_2 + 0x39c)" (identifier "lVar21") (= "=") (cast_expression "(long)*(int *)(param_2 + 0x39c)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*(int *)(param_2 + 0x39c)" (* "*") (cast_expression "(int *)(param_2 + 0x39c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x39c)" (( "(") (binary_expression "param_2 + 0x39c" (identifier "param_2") (+ "+") (number_literal "0x39c")) () ")")))))) (; ";")) (if_statement "if (lVar21 < *(long *)(param_2 + 0x390)) {\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }" (if "if") (parenthesized_expression "(lVar21 < *(long *)(param_2 + 0x390))" (( "(") (binary_expression "lVar21 < *(long *)(param_2 + 0x390)" (identifier "lVar21") (< "<") (pointer_expression "*(long *)(param_2 + 0x390)" (* "*") (cast_expression "(long *)(param_2 + 0x390)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x390)" (( "(") (binary_expression "param_2 + 0x390" (identifier "param_2") (+ "+") (number_literal "0x390")) () ")"))))) () ")")) (compound_statement "{\n        do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));\n      }" ({ "{") (do_statement "do {\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        } while (lVar21 < *(long *)(param_2 + 0x390));" (do "do") (compound_statement "{\n          free(*(void **)(lVar8 + lVar21 * 8));\n          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));\n          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;\n          lVar8 = *(long *)(param_2 + 0x3a0);\n          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;\n          lVar21 = lVar21 + 1;\n        }" ({ "{") (expression_statement "free(*(void **)(lVar8 + lVar21 * 8));" (call_expression "free(*(void **)(lVar8 + lVar21 * 8))" (identifier "free") (argument_list "(*(void **)(lVar8 + lVar21 * 8))" (( "(") (pointer_expression "*(void **)(lVar8 + lVar21 * 8)" (* "*") (cast_expression "(void **)(lVar8 + lVar21 * 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar8 + lVar21 * 8)" (( "(") (binary_expression "lVar8 + lVar21 * 8" (identifier "lVar8") (+ "+") (binary_expression "lVar21 * 8" (identifier "lVar21") (* "*") (number_literal "8"))) () ")")))) () ")"))) (; ";")) (expression_statement "free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));" (call_expression "free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8))" (identifier "free") (argument_list "(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8))" (( "(") (pointer_expression "*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" (* "*") (cast_expression "(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" (( "(") (binary_expression "*(long *)(param_2 + 0x3a8) + lVar21 * 8" (pointer_expression "*(long *)(param_2 + 0x3a8)" (* "*") (cast_expression "(long *)(param_2 + 0x3a8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3a8)" (( "(") (binary_expression "param_2 + 0x3a8" (identifier "param_2") (+ "+") (number_literal "0x3a8")) () ")")))) (+ "+") (binary_expression "lVar21 * 8" (identifier "lVar21") (* "*") (number_literal "8"))) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;" (assignment_expression "*(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0" (pointer_expression "*(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" (* "*") (cast_expression "(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x3a8) + lVar21 * 8)" (( "(") (binary_expression "*(long *)(param_2 + 0x3a8) + lVar21 * 8" (pointer_expression "*(long *)(param_2 + 0x3a8)" (* "*") (cast_expression "(long *)(param_2 + 0x3a8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3a8)" (( "(") (binary_expression "param_2 + 0x3a8" (identifier "param_2") (+ "+") (number_literal "0x3a8")) () ")")))) (+ "+") (binary_expression "lVar21 * 8" (identifier "lVar21") (* "*") (number_literal "8"))) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar8 = *(long *)(param_2 + 0x3a0);" (assignment_expression "lVar8 = *(long *)(param_2 + 0x3a0)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(param_2 + 0x3a0)" (* "*") (cast_expression "(long *)(param_2 + 0x3a0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3a0)" (( "(") (binary_expression "param_2 + 0x3a0" (identifier "param_2") (+ "+") (number_literal "0x3a0")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(lVar8 + lVar21 * 8) = 0;" (assignment_expression "*(undefined8 *)(lVar8 + lVar21 * 8) = 0" (pointer_expression "*(undefined8 *)(lVar8 + lVar21 * 8)" (* "*") (cast_expression "(undefined8 *)(lVar8 + lVar21 * 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + lVar21 * 8)" (( "(") (binary_expression "lVar8 + lVar21 * 8" (identifier "lVar8") (+ "+") (binary_expression "lVar21 * 8" (identifier "lVar21") (* "*") (number_literal "8"))) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar21 = lVar21 + 1;" (assignment_expression "lVar21 = lVar21 + 1" (identifier "lVar21") (= "=") (binary_expression "lVar21 + 1" (identifier "lVar21") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar21 < *(long *)(param_2 + 0x390))" (( "(") (binary_expression "lVar21 < *(long *)(param_2 + 0x390)" (identifier "lVar21") (< "<") (pointer_expression "*(long *)(param_2 + 0x390)" (* "*") (cast_expression "(long *)(param_2 + 0x390)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x390)" (( "(") (binary_expression "param_2 + 0x390" (identifier "param_2") (+ "+") (number_literal "0x390")) () ")"))))) () ")")) (; ";")) (} "}"))) (expression_statement "iVar24 = 1;" (assignment_expression "iVar24 = 1" (identifier "iVar24") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "*(int *)(param_2 + 0x398) = iVar24;" (assignment_expression "*(int *)(param_2 + 0x398) = iVar24" (pointer_expression "*(int *)(param_2 + 0x398)" (* "*") (cast_expression "(int *)(param_2 + 0x398)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x398)" (( "(") (binary_expression "param_2 + 0x398" (identifier "param_2") (+ "+") (number_literal "0x398")) () ")")))) (= "=") (identifier "iVar24")) (; ";")) (expression_statement "local_e0 = (undefined8 *)FUN_00120ce0(0x800);" (assignment_expression "local_e0 = (undefined8 *)FUN_00120ce0(0x800)" (identifier "local_e0") (= "=") (cast_expression "(undefined8 *)FUN_00120ce0(0x800)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00120ce0(0x800)" (identifier "FUN_00120ce0") (argument_list "(0x800)" (( "(") (number_literal "0x800") () ")"))))) (; ";")) (expression_statement "uVar5 = _UNK_00128298;" (assignment_expression "uVar5 = _UNK_00128298" (identifier "uVar5") (= "=") (identifier "_UNK_00128298")) (; ";")) (expression_statement "uVar4 = _DAT_00128290;" (assignment_expression "uVar4 = _DAT_00128290" (identifier "uVar4") (= "=") (identifier "_DAT_00128290")) (; ";")) (expression_statement "*plVar15 = (long)local_e0;" (assignment_expression "*plVar15 = (long)local_e0" (pointer_expression "*plVar15" (* "*") (identifier "plVar15")) (= "=") (cast_expression "(long)local_e0" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_e0"))) (; ";")) (expression_statement "puVar17 = local_e0;" (assignment_expression "puVar17 = local_e0" (identifier "puVar17") (= "=") (identifier "local_e0")) (; ";")) (do_statement "do {\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    } while (local_e0 + 0x100 != puVar17);" (do "do") (compound_statement "{\n      *puVar17 = uVar4;\n      puVar17[1] = uVar5;\n      puVar17 = puVar17 + 2;\n    }" ({ "{") (expression_statement "*puVar17 = uVar4;" (assignment_expression "*puVar17 = uVar4" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "puVar17[1] = uVar5;" (assignment_expression "puVar17[1] = uVar5" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "puVar17 = puVar17 + 2;" (assignment_expression "puVar17 = puVar17 + 2" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 2" (identifier "puVar17") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_e0 + 0x100 != puVar17)" (( "(") (binary_expression "local_e0 + 0x100 != puVar17" (binary_expression "local_e0 + 0x100" (identifier "local_e0") (+ "+") (number_literal "0x100")) (!= "!=") (identifier "puVar17")) () ")")) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1) = 0;" (assignment_expression "*(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1) = 0" (pointer_expression "*(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1)" (* "*") (cast_expression "(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x3b0) + param_1)" (( "(") (binary_expression "*(long *)(param_2 + 0x3b0) + param_1" (pointer_expression "*(long *)(param_2 + 0x3b0)" (* "*") (cast_expression "(long *)(param_2 + 0x3b0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3b0)" (( "(") (binary_expression "param_2 + 0x3b0" (identifier "param_2") (+ "+") (number_literal "0x3b0")) () ")")))) (+ "+") (identifier "param_1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar8 = *(long *)(param_2 + 0x358) + lVar7;" (assignment_expression "lVar8 = *(long *)(param_2 + 0x358) + lVar7" (identifier "lVar8") (= "=") (binary_expression "*(long *)(param_2 + 0x358) + lVar7" (pointer_expression "*(long *)(param_2 + 0x358)" (* "*") (cast_expression "(long *)(param_2 + 0x358)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x358)" (( "(") (binary_expression "param_2 + 0x358" (identifier "param_2") (+ "+") (number_literal "0x358")) () ")")))) (+ "+") (identifier "lVar7"))) (; ";")) (expression_statement "bVar18 = *(byte *)(lVar8 + 0x20);" (assignment_expression "bVar18 = *(byte *)(lVar8 + 0x20)" (identifier "bVar18") (= "=") (pointer_expression "*(byte *)(lVar8 + 0x20)" (* "*") (cast_expression "(byte *)(lVar8 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x20)" (( "(") (binary_expression "lVar8 + 0x20" (identifier "lVar8") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar3 = *(ushort *)(lVar8 + 0x22);" (assignment_expression "uVar3 = *(ushort *)(lVar8 + 0x22)" (identifier "uVar3") (= "=") (pointer_expression "*(ushort *)(lVar8 + 0x22)" (* "*") (cast_expression "(ushort *)(lVar8 + 0x22)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x22)" (( "(") (binary_expression "lVar8 + 0x22" (identifier "lVar8") (+ "+") (number_literal "0x22")) () ")"))))) (; ";")) (expression_statement "uVar23 = (uint)uVar3;" (assignment_expression "uVar23 = (uint)uVar3" (identifier "uVar23") (= "=") (cast_expression "(uint)uVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar3"))) (; ";")) (if_statement "if (((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);\n    *pbVar9 = *pbVar9 | 4;\n    lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar3 = *(ushort *)(lVar8 + 0x22);\n    uVar23 = (uint)uVar3;\n  }" (if "if") (parenthesized_expression "(((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0)" (( "(") (binary_expression "((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0" (parenthesized_expression "((int)uVar23 >> 6 & (uint)bVar18 & 7)" (( "(") (binary_expression "(int)uVar23 >> 6 & (uint)bVar18 & 7" (binary_expression "(int)uVar23 >> 6 & (uint)bVar18" (binary_expression "(int)uVar23 >> 6" (cast_expression "(int)uVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar23")) (>> ">>") (number_literal "6")) (& "&") (cast_expression "(uint)bVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar18"))) (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);\n    *pbVar9 = *pbVar9 | 4;\n    lVar8 = *(long *)(param_2 + 0x358) + lVar7;\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar3 = *(ushort *)(lVar8 + 0x22);\n    uVar23 = (uint)uVar3;\n  }" ({ "{") (expression_statement "pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);" (assignment_expression "pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1)" (identifier "pbVar9") (= "=") (cast_expression "(byte *)(*(long *)(param_2 + 0x3b0) + param_1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x3b0) + param_1)" (( "(") (binary_expression "*(long *)(param_2 + 0x3b0) + param_1" (pointer_expression "*(long *)(param_2 + 0x3b0)" (* "*") (cast_expression "(long *)(param_2 + 0x3b0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3b0)" (( "(") (binary_expression "param_2 + 0x3b0" (identifier "param_2") (+ "+") (number_literal "0x3b0")) () ")")))) (+ "+") (identifier "param_1")) () ")")))) (; ";")) (expression_statement "*pbVar9 = *pbVar9 | 4;" (assignment_expression "*pbVar9 = *pbVar9 | 4" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (= "=") (binary_expression "*pbVar9 | 4" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (| "|") (number_literal "4"))) (; ";")) (expression_statement "lVar8 = *(long *)(param_2 + 0x358) + lVar7;" (assignment_expression "lVar8 = *(long *)(param_2 + 0x358) + lVar7" (identifier "lVar8") (= "=") (binary_expression "*(long *)(param_2 + 0x358) + lVar7" (pointer_expression "*(long *)(param_2 + 0x358)" (* "*") (cast_expression "(long *)(param_2 + 0x358)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x358)" (( "(") (binary_expression "param_2 + 0x358" (identifier "param_2") (+ "+") (number_literal "0x358")) () ")")))) (+ "+") (identifier "lVar7"))) (; ";")) (expression_statement "bVar18 = *(byte *)(lVar8 + 0x20);" (assignment_expression "bVar18 = *(byte *)(lVar8 + 0x20)" (identifier "bVar18") (= "=") (pointer_expression "*(byte *)(lVar8 + 0x20)" (* "*") (cast_expression "(byte *)(lVar8 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x20)" (( "(") (binary_expression "lVar8 + 0x20" (identifier "lVar8") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar3 = *(ushort *)(lVar8 + 0x22);" (assignment_expression "uVar3 = *(ushort *)(lVar8 + 0x22)" (identifier "uVar3") (= "=") (pointer_expression "*(ushort *)(lVar8 + 0x22)" (* "*") (cast_expression "(ushort *)(lVar8 + 0x22)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x22)" (( "(") (binary_expression "lVar8 + 0x22" (identifier "lVar8") (+ "+") (number_literal "0x22")) () ")"))))) (; ";")) (expression_statement "uVar23 = (uint)uVar3;" (assignment_expression "uVar23 = (uint)uVar3" (identifier "uVar23") (= "=") (cast_expression "(uint)uVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar3"))) (; ";")) (} "}"))) (if_statement "if (((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 2;\n    lVar8 = lVar7 + *(long *)(param_2 + 0x358);\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar23 = (uint)*(ushort *)(lVar8 + 0x22);\n  }" (if "if") (parenthesized_expression "(((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0)" (( "(") (binary_expression "((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0" (parenthesized_expression "((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7)" (( "(") (binary_expression "(int)(uint)uVar3 >> 3 & (uint)bVar18 & 7" (binary_expression "(int)(uint)uVar3 >> 3 & (uint)bVar18" (binary_expression "(int)(uint)uVar3 >> 3" (cast_expression "(int)(uint)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(uint)uVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar3"))) (>> ">>") (number_literal "3")) (& "&") (cast_expression "(uint)bVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar18"))) (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 2;\n    lVar8 = lVar7 + *(long *)(param_2 + 0x358);\n    bVar18 = *(byte *)(lVar8 + 0x20);\n    uVar23 = (uint)*(ushort *)(lVar8 + 0x22);\n  }" ({ "{") (expression_statement "pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));" (assignment_expression "pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0))" (identifier "pbVar9") (= "=") (cast_expression "(byte *)(param_1 + *(long *)(param_2 + 0x3b0))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + *(long *)(param_2 + 0x3b0))" (( "(") (binary_expression "param_1 + *(long *)(param_2 + 0x3b0)" (identifier "param_1") (+ "+") (pointer_expression "*(long *)(param_2 + 0x3b0)" (* "*") (cast_expression "(long *)(param_2 + 0x3b0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3b0)" (( "(") (binary_expression "param_2 + 0x3b0" (identifier "param_2") (+ "+") (number_literal "0x3b0")) () ")"))))) () ")")))) (; ";")) (expression_statement "*pbVar9 = *pbVar9 | 2;" (assignment_expression "*pbVar9 = *pbVar9 | 2" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (= "=") (binary_expression "*pbVar9 | 2" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (| "|") (number_literal "2"))) (; ";")) (expression_statement "lVar8 = lVar7 + *(long *)(param_2 + 0x358);" (assignment_expression "lVar8 = lVar7 + *(long *)(param_2 + 0x358)" (identifier "lVar8") (= "=") (binary_expression "lVar7 + *(long *)(param_2 + 0x358)" (identifier "lVar7") (+ "+") (pointer_expression "*(long *)(param_2 + 0x358)" (* "*") (cast_expression "(long *)(param_2 + 0x358)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x358)" (( "(") (binary_expression "param_2 + 0x358" (identifier "param_2") (+ "+") (number_literal "0x358")) () ")")))))) (; ";")) (expression_statement "bVar18 = *(byte *)(lVar8 + 0x20);" (assignment_expression "bVar18 = *(byte *)(lVar8 + 0x20)" (identifier "bVar18") (= "=") (pointer_expression "*(byte *)(lVar8 + 0x20)" (* "*") (cast_expression "(byte *)(lVar8 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x20)" (( "(") (binary_expression "lVar8 + 0x20" (identifier "lVar8") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar23 = (uint)*(ushort *)(lVar8 + 0x22);" (assignment_expression "uVar23 = (uint)*(ushort *)(lVar8 + 0x22)" (identifier "uVar23") (= "=") (binary_expression "(uint)*(ushort *)(lVar8 + 0x22)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(lVar8 + 0x22)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x22)" (( "(") (binary_expression "lVar8 + 0x22" (identifier "lVar8") (+ "+") (number_literal "0x22")) () ")"))))) (; ";")) (} "}"))) (if_statement "if ((uVar23 & 7 & (uint)bVar18) != 0) {\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 1;\n  }" (if "if") (parenthesized_expression "((uVar23 & 7 & (uint)bVar18) != 0)" (( "(") (binary_expression "(uVar23 & 7 & (uint)bVar18) != 0" (parenthesized_expression "(uVar23 & 7 & (uint)bVar18)" (( "(") (binary_expression "uVar23 & 7 & (uint)bVar18" (binary_expression "uVar23 & 7" (identifier "uVar23") (& "&") (number_literal "7")) (& "&") (cast_expression "(uint)bVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar18"))) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));\n    *pbVar9 = *pbVar9 | 1;\n  }" ({ "{") (expression_statement "pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));" (assignment_expression "pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0))" (identifier "pbVar9") (= "=") (cast_expression "(byte *)(param_1 + *(long *)(param_2 + 0x3b0))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + *(long *)(param_2 + 0x3b0))" (( "(") (binary_expression "param_1 + *(long *)(param_2 + 0x3b0)" (identifier "param_1") (+ "+") (pointer_expression "*(long *)(param_2 + 0x3b0)" (* "*") (cast_expression "(long *)(param_2 + 0x3b0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3b0)" (( "(") (binary_expression "param_2 + 0x3b0" (identifier "param_2") (+ "+") (number_literal "0x3b0")) () ")"))))) () ")")))) (; ";")) (expression_statement "*pbVar9 = *pbVar9 | 1;" (assignment_expression "*pbVar9 = *pbVar9 | 1" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (= "=") (binary_expression "*pbVar9 | 1" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (| "|") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar13 = *(ulong *)(param_2 + 0x300);" (assignment_expression "uVar13 = *(ulong *)(param_2 + 0x300)" (identifier "uVar13") (= "=") (pointer_expression "*(ulong *)(param_2 + 0x300)" (* "*") (cast_expression "(ulong *)(param_2 + 0x300)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x300)" (( "(") (binary_expression "param_2 + 0x300" (identifier "param_2") (+ "+") (number_literal "0x300")) () ")"))))) (; ";")) (if_statement "if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) {\nLAB_00114c1c:\n                    \n    FUN_00120e70();\n  }" (if "if") (parenthesized_expression "(((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0))" (( "(") (binary_expression "((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)" (parenthesized_expression "((long)(uVar13 << 4) < 0)" (( "(") (binary_expression "(long)(uVar13 << 4) < 0" (cast_expression "(long)(uVar13 << 4)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(uVar13 << 4)" (( "(") (binary_expression "uVar13 << 4" (identifier "uVar13") (<< "<<") (number_literal "4")) () ")"))) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar13 >> 0x3c != 0)" (( "(") (binary_expression "uVar13 >> 0x3c != 0" (binary_expression "uVar13 >> 0x3c" (identifier "uVar13") (>> ">>") (number_literal "0x3c")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\nLAB_00114c1c:\n                    \n    FUN_00120e70();\n  }" ({ "{") (labeled_statement "LAB_00114c1c:\n                    \n    FUN_00120e70();" (statement_identifier "LAB_00114c1c") (: ":") (expression_statement "FUN_00120e70();" (call_expression "FUN_00120e70()" (identifier "FUN_00120e70") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (expression_statement "__src = (ulong *)FUN_00120ce0();" (assignment_expression "__src = (ulong *)FUN_00120ce0()" (identifier "__src") (= "=") (cast_expression "(ulong *)FUN_00120ce0()" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00120ce0()" (identifier "FUN_00120ce0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "local_f8 = lVar7 + *(long *)(param_2 + 0x358);" (assignment_expression "local_f8 = lVar7 + *(long *)(param_2 + 0x358)" (identifier "local_f8") (= "=") (binary_expression "lVar7 + *(long *)(param_2 + 0x358)" (identifier "lVar7") (+ "+") (pointer_expression "*(long *)(param_2 + 0x358)" (* "*") (cast_expression "(long *)(param_2 + 0x358)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x358)" (( "(") (binary_expression "param_2 + 0x358" (identifier "param_2") (+ "+") (number_literal "0x358")) () ")")))))) (; ";")) (expression_statement "uVar22 = *(ulong *)(local_f8 + 0x10);" (assignment_expression "uVar22 = *(ulong *)(local_f8 + 0x10)" (identifier "uVar22") (= "=") (pointer_expression "*(ulong *)(local_f8 + 0x10)" (* "*") (cast_expression "(ulong *)(local_f8 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_f8 + 0x10)" (( "(") (binary_expression "local_f8 + 0x10" (identifier "local_f8") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (uVar22 == 0) {\n    lVar8 = 0;\n  }\n  else {\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }" (if "if") (parenthesized_expression "(uVar22 == 0)" (( "(") (binary_expression "uVar22 == 0" (identifier "uVar22") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    lVar8 = 0;\n  }" ({ "{") (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" (identifier "lVar8") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }" (else "else") (compound_statement "{\n    local_100 = 0;\n    lVar26 = *(long *)(local_f8 + 8);\n    lVar8 = 0;\n    lVar21 = *(long *)(param_2 + 0x370);\n    do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);\n  }" ({ "{") (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" (identifier "local_100") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar26 = *(long *)(local_f8 + 8);" (assignment_expression "lVar26 = *(long *)(local_f8 + 8)" (identifier "lVar26") (= "=") (pointer_expression "*(long *)(local_f8 + 8)" (* "*") (cast_expression "(long *)(local_f8 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_f8 + 8)" (( "(") (binary_expression "local_f8 + 8" (identifier "local_f8") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" (identifier "lVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar21 = *(long *)(param_2 + 0x370);" (assignment_expression "lVar21 = *(long *)(param_2 + 0x370)" (identifier "lVar21") (= "=") (pointer_expression "*(long *)(param_2 + 0x370)" (* "*") (cast_expression "(long *)(param_2 + 0x370)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x370)" (( "(") (binary_expression "param_2 + 0x370" (identifier "param_2") (+ "+") (number_literal "0x370")) () ")"))))) (; ";")) (do_statement "do {\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    } while (local_100 < uVar22);" (do "do") (compound_statement "{\n      uVar32 = 0;\n      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n      if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }\n      local_100 = local_100 + 1;\n    }" ({ "{") (expression_statement "uVar32 = 0;" (assignment_expression "uVar32 = 0" (identifier "uVar32") (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);" (assignment_expression "plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" (identifier "plVar15") (= "=") (cast_expression "(long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" (( "(") (binary_expression "lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18" (identifier "lVar21") (+ "+") (binary_expression "*(long *)(lVar26 + local_100 * 0x10) * 0x18" (pointer_expression "*(long *)(lVar26 + local_100 * 0x10)" (* "*") (cast_expression "(long *)(lVar26 + local_100 * 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar26 + local_100 * 0x10)" (( "(") (binary_expression "lVar26 + local_100 * 0x10" (identifier "lVar26") (+ "+") (binary_expression "local_100 * 0x10" (identifier "local_100") (* "*") (number_literal "0x10"))) () ")")))) (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (if_statement "if (plVar15[1] != 0) {\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }" (if "if") (parenthesized_expression "(plVar15[1] != 0)" (( "(") (binary_expression "plVar15[1] != 0" (subscript_expression "plVar15[1]" (identifier "plVar15") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);\n        uVar22 = *(ulong *)(local_f8 + 0x10);\n      }" ({ "{") (do_statement "do {\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        } while (uVar32 < (ulong)plVar15[1]);" (do "do") (compound_statement "{\n          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);\n          uVar22 = *puVar10;\n          uVar23 = (uint)puVar10[1];\n          puVar10 = __src;\n          if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }\n          *__src = uVar22;\n          lVar8 = lVar8 + 1;\n          *(uint *)(__src + 1) = uVar23;\n          __src = puVar10;\nLAB_00114119:\n          uVar32 = uVar32 + 1;\n          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);\n        }" ({ "{") (expression_statement "puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);" (assignment_expression "puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15)" (identifier "puVar10") (= "=") (cast_expression "(ulong *)(uVar32 * 0x10 + *plVar15)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar32 * 0x10 + *plVar15)" (( "(") (binary_expression "uVar32 * 0x10 + *plVar15" (binary_expression "uVar32 * 0x10" (identifier "uVar32") (* "*") (number_literal "0x10")) (+ "+") (pointer_expression "*plVar15" (* "*") (identifier "plVar15"))) () ")")))) (; ";")) (expression_statement "uVar22 = *puVar10;" (assignment_expression "uVar22 = *puVar10" (identifier "uVar22") (= "=") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (; ";")) (expression_statement "uVar23 = (uint)puVar10[1];" (assignment_expression "uVar23 = (uint)puVar10[1]" (identifier "uVar23") (= "=") (cast_expression "(uint)puVar10[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar10[1]" (identifier "puVar10") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "puVar10 = __src;" (assignment_expression "puVar10 = __src" (identifier "puVar10") (= "=") (identifier "__src")) (; ";")) (if_statement "if (lVar8 == 0) {\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }\n          else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }" (if "if") (parenthesized_expression "(lVar8 == 0)" (( "(") (binary_expression "lVar8 == 0" (identifier "lVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }\n          }" ({ "{") (if_statement "if ((long)uVar13 < 1) {\n              lVar25 = 0;\n              goto LAB_00114026;\n            }" (if "if") (parenthesized_expression "((long)uVar13 < 1)" (( "(") (binary_expression "(long)uVar13 < 1" (cast_expression "(long)uVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar13")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n              lVar25 = 0;\n              goto LAB_00114026;\n            }" ({ "{") (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" (identifier "lVar25") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00114026;" (goto "goto") (statement_identifier "LAB_00114026") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }" (else "else") (compound_statement "{\n            lVar25 = 0;\n            lVar28 = lVar8;\n            do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);\nLAB_0011401d:\n            uVar12 = uVar13;\n            if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }\n            __src = puVar10 + lVar25 * 2;\n            uVar13 = uVar12;\n            if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }\n          }" ({ "{") (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" (identifier "lVar25") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar28 = lVar8;" (assignment_expression "lVar28 = lVar8" (identifier "lVar28") (= "=") (identifier "lVar8")) (; ";")) (do_statement "do {\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            } while (lVar25 < lVar28);" (do "do") (compound_statement "{\n              while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }\n              lVar25 = lVar11 + 1;\n            }" ({ "{") (while_statement "while( true ) {\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                lVar11 = lVar28 + lVar25 >> 1;\n                puVar20 = __src + lVar11 * 2;\n                uVar12 = *puVar20;\n                if (uVar12 <= uVar22 && uVar22 != uVar12) break;\n                if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }\n                lVar28 = lVar11;\n                if (lVar11 <= lVar25) goto LAB_0011401d;\n              }" ({ "{") (expression_statement "lVar11 = lVar28 + lVar25 >> 1;" (assignment_expression "lVar11 = lVar28 + lVar25 >> 1" (identifier "lVar11") (= "=") (binary_expression "lVar28 + lVar25 >> 1" (binary_expression "lVar28 + lVar25" (identifier "lVar28") (+ "+") (identifier "lVar25")) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "puVar20 = __src + lVar11 * 2;" (assignment_expression "puVar20 = __src + lVar11 * 2" (identifier "puVar20") (= "=") (binary_expression "__src + lVar11 * 2" (identifier "__src") (+ "+") (binary_expression "lVar11 * 2" (identifier "lVar11") (* "*") (number_literal "2")))) (; ";")) (expression_statement "uVar12 = *puVar20;" (assignment_expression "uVar12 = *puVar20" (identifier "uVar12") (= "=") (pointer_expression "*puVar20" (* "*") (identifier "puVar20"))) (; ";")) (if_statement "if (uVar12 <= uVar22 && uVar22 != uVar12) break;" (if "if") (parenthesized_expression "(uVar12 <= uVar22 && uVar22 != uVar12)" (( "(") (binary_expression "uVar12 <= uVar22 && uVar22 != uVar12" (binary_expression "uVar12 <= uVar22" (identifier "uVar12") (<= "<=") (identifier "uVar22")) (&& "&&") (binary_expression "uVar22 != uVar12" (identifier "uVar22") (!= "!=") (identifier "uVar12"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (uVar22 == uVar12) {\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }" (if "if") (parenthesized_expression "(uVar22 == uVar12)" (( "(") (binary_expression "uVar22 == uVar12" (identifier "uVar22") (== "==") (identifier "uVar12")) () ")")) (compound_statement "{\n                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;\n                  goto LAB_00114119;\n                }" ({ "{") (expression_statement "*(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;" (assignment_expression "*(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23" (pointer_expression "*(uint *)(puVar20 + 1)" (* "*") (cast_expression "(uint *)(puVar20 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + 1)" (( "(") (binary_expression "puVar20 + 1" (identifier "puVar20") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "(uint)puVar20[1] | uVar23" (cast_expression "(uint)puVar20[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar20[1]" (identifier "puVar20") ([ "[") (number_literal "1") (] "]"))) (| "|") (identifier "uVar23"))) (; ";")) (goto_statement "goto LAB_00114119;" (goto "goto") (statement_identifier "LAB_00114119") (; ";")) (} "}"))) (expression_statement "lVar28 = lVar11;" (assignment_expression "lVar28 = lVar11" (identifier "lVar28") (= "=") (identifier "lVar11")) (; ";")) (if_statement "if (lVar11 <= lVar25) goto LAB_0011401d;" (if "if") (parenthesized_expression "(lVar11 <= lVar25)" (( "(") (binary_expression "lVar11 <= lVar25" (identifier "lVar11") (<= "<=") (identifier "lVar25")) () ")")) (goto_statement "goto LAB_0011401d;" (goto "goto") (statement_identifier "LAB_0011401d") (; ";"))) (} "}"))) (expression_statement "lVar25 = lVar11 + 1;" (assignment_expression "lVar25 = lVar11 + 1" (identifier "lVar25") (= "=") (binary_expression "lVar11 + 1" (identifier "lVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar25 < lVar28)" (( "(") (binary_expression "lVar25 < lVar28" (identifier "lVar25") (< "<") (identifier "lVar28")) () ")")) (; ";")) (labeled_statement "LAB_0011401d:\n            uVar12 = uVar13;" (statement_identifier "LAB_0011401d") (: ":") (expression_statement "uVar12 = uVar13;" (assignment_expression "uVar12 = uVar13" (identifier "uVar12") (= "=") (identifier "uVar13")) (; ";"))) (if_statement "if ((long)uVar13 <= lVar8) {\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }" (if "if") (parenthesized_expression "((long)uVar13 <= lVar8)" (( "(") (binary_expression "(long)uVar13 <= lVar8" (cast_expression "(long)uVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar13")) (<= "<=") (identifier "lVar8")) () ")")) (compound_statement "{\nLAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;\n              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }\n              if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;\n              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);\n              lVar21 = *(long *)(param_2 + 0x370);\n              local_f8 = lVar7 + *(long *)(param_2 + 0x358);\n              lVar26 = *(long *)(local_f8 + 8);\n            }" ({ "{") (labeled_statement "LAB_00114026:\n              uVar12 = ((long)uVar13 >> 1) + uVar13;" (statement_identifier "LAB_00114026") (: ":") (expression_statement "uVar12 = ((long)uVar13 >> 1) + uVar13;" (assignment_expression "uVar12 = ((long)uVar13 >> 1) + uVar13" (identifier "uVar12") (= "=") (binary_expression "((long)uVar13 >> 1) + uVar13" (parenthesized_expression "((long)uVar13 >> 1)" (( "(") (binary_expression "(long)uVar13 >> 1" (cast_expression "(long)uVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar13")) (>> ">>") (number_literal "1")) () ")")) (+ "+") (identifier "uVar13"))) (; ";"))) (if_statement "if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))\n              {\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }\n              else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }" (if "if") (parenthesized_expression "((SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))" (( "(") (binary_expression "(SCARRY8((long)uVar13 >> 1,uVar13)) ||\n                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))" (parenthesized_expression "(SCARRY8((long)uVar13 >> 1,uVar13))" (( "(") (call_expression "SCARRY8((long)uVar13 >> 1,uVar13)" (identifier "SCARRY8") (argument_list "((long)uVar13 >> 1,uVar13)" (( "(") (binary_expression "(long)uVar13 >> 1" (cast_expression "(long)uVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar13")) (>> ">>") (number_literal "1")) (, ",") (identifier "uVar13") () ")"))) () ")")) (|| "||") (parenthesized_expression "(lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))" (( "(") (comma_expression "lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)" (assignment_expression "lVar21 = uVar12 * 0x10" (identifier "lVar21") (= "=") (binary_expression "uVar12 * 0x10" (identifier "uVar12") (* "*") (number_literal "0x10"))) (, ",") (binary_expression "SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816(lVar21)" (identifier "SEXT816") (argument_list "(lVar21)" (( "(") (identifier "lVar21") () ")"))) (!= "!=") (binary_expression "SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816((long)uVar12)" (identifier "SEXT816") (argument_list "((long)uVar12)" (( "(") (cast_expression "(long)uVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar12")) () ")"))) (* "*") (call_expression "SEXT816(0x10)" (identifier "SEXT816") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")")))))) () ")"))) () ")")) (compound_statement "{\n                lVar21 = 0x7ffffffffffffff0;\n                uVar12 = 0x7ffffffffffffff;\n              }" ({ "{") (expression_statement "lVar21 = 0x7ffffffffffffff0;" (assignment_expression "lVar21 = 0x7ffffffffffffff0" (identifier "lVar21") (= "=") (number_literal "0x7ffffffffffffff0")) (; ";")) (expression_statement "uVar12 = 0x7ffffffffffffff;" (assignment_expression "uVar12 = 0x7ffffffffffffff" (identifier "uVar12") (= "=") (number_literal "0x7ffffffffffffff")) (; ";")) (} "}")) (else_clause "else if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }" (else "else") (if_statement "if (lVar21 < 0x80) {\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }" (if "if") (parenthesized_expression "(lVar21 < 0x80)" (( "(") (binary_expression "lVar21 < 0x80" (identifier "lVar21") (< "<") (number_literal "0x80")) () ")")) (compound_statement "{\n                uVar12 = 8;\n                lVar21 = 0x80;\n              }" ({ "{") (expression_statement "uVar12 = 8;" (assignment_expression "uVar12 = 8" (identifier "uVar12") (= "=") (number_literal "8")) (; ";")) (expression_statement "lVar21 = 0x80;" (assignment_expression "lVar21 = 0x80" (identifier "lVar21") (= "=") (number_literal "0x80")) (; ";")) (} "}"))))) (if_statement "if (((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))) goto LAB_00114c1c;" (if "if") (parenthesized_expression "(((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  )))" (( "(") (binary_expression "((long)(uVar12 - uVar13) < 1) &&\n                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))" (parenthesized_expression "((long)(uVar12 - uVar13) < 1)" (( "(") (binary_expression "(long)(uVar12 - uVar13) < 1" (cast_expression "(long)(uVar12 - uVar13)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(uVar12 - uVar13)" (( "(") (binary_expression "uVar12 - uVar13" (identifier "uVar12") (- "-") (identifier "uVar13")) () ")"))) (< "<") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  ))" (( "(") (parenthesized_expression "(uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))\n                  )" (( "(") (comma_expression "uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))" (assignment_expression "uVar12 = uVar13 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar13 + 1" (identifier "uVar13") (+ "+") (number_literal "1"))) (, ",") (binary_expression "SCARRY8(uVar13,1) ||\n                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))" (call_expression "SCARRY8(uVar13,1)" (identifier "SCARRY8") (argument_list "(uVar13,1)" (( "(") (identifier "uVar13") (, ",") (number_literal "1") () ")"))) (|| "||") (parenthesized_expression "(lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))" (( "(") (comma_expression "lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)" (assignment_expression "lVar21 = uVar12 * 0x10" (identifier "lVar21") (= "=") (binary_expression "uVar12 * 0x10" (identifier "uVar12") (* "*") (number_literal "0x10"))) (, ",") (binary_expression "SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816(lVar21)" (identifier "SEXT816") (argument_list "(lVar21)" (( "(") (identifier "lVar21") () ")"))) (!= "!=") (binary_expression "SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816((long)uVar12)" (identifier "SEXT816") (argument_list "((long)uVar12)" (( "(") (cast_expression "(long)uVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar12")) () ")"))) (* "*") (call_expression "SEXT816(0x10)" (identifier "SEXT816") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")")))))) () ")")))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_00114c1c;" (goto "goto") (statement_identifier "LAB_00114c1c") (; ";"))) (expression_statement "puVar10 = (ulong *)FUN_00120d00(__src,lVar21);" (assignment_expression "puVar10 = (ulong *)FUN_00120d00(__src,lVar21)" (identifier "puVar10") (= "=") (cast_expression "(ulong *)FUN_00120d00(__src,lVar21)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00120d00(__src,lVar21)" (identifier "FUN_00120d00") (argument_list "(__src,lVar21)" (( "(") (identifier "__src") (, ",") (identifier "lVar21") () ")"))))) (; ";")) (expression_statement "lVar21 = *(long *)(param_2 + 0x370);" (assignment_expression "lVar21 = *(long *)(param_2 + 0x370)" (identifier "lVar21") (= "=") (pointer_expression "*(long *)(param_2 + 0x370)" (* "*") (cast_expression "(long *)(param_2 + 0x370)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x370)" (( "(") (binary_expression "param_2 + 0x370" (identifier "param_2") (+ "+") (number_literal "0x370")) () ")"))))) (; ";")) (expression_statement "local_f8 = lVar7 + *(long *)(param_2 + 0x358);" (assignment_expression "local_f8 = lVar7 + *(long *)(param_2 + 0x358)" (identifier "local_f8") (= "=") (binary_expression "lVar7 + *(long *)(param_2 + 0x358)" (identifier "lVar7") (+ "+") (pointer_expression "*(long *)(param_2 + 0x358)" (* "*") (cast_expression "(long *)(param_2 + 0x358)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x358)" (( "(") (binary_expression "param_2 + 0x358" (identifier "param_2") (+ "+") (number_literal "0x358")) () ")")))))) (; ";")) (expression_statement "lVar26 = *(long *)(local_f8 + 8);" (assignment_expression "lVar26 = *(long *)(local_f8 + 8)" (identifier "lVar26") (= "=") (pointer_expression "*(long *)(local_f8 + 8)" (* "*") (cast_expression "(long *)(local_f8 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_f8 + 8)" (( "(") (binary_expression "local_f8 + 8" (identifier "local_f8") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "__src = puVar10 + lVar25 * 2;" (assignment_expression "__src = puVar10 + lVar25 * 2" (identifier "__src") (= "=") (binary_expression "puVar10 + lVar25 * 2" (identifier "puVar10") (+ "+") (binary_expression "lVar25 * 2" (identifier "lVar25") (* "*") (number_literal "2")))) (; ";")) (expression_statement "uVar13 = uVar12;" (assignment_expression "uVar13 = uVar12" (identifier "uVar13") (= "=") (identifier "uVar12")) (; ";")) (if_statement "if (lVar25 < lVar8) {\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }" (if "if") (parenthesized_expression "(lVar25 < lVar8)" (( "(") (binary_expression "lVar25 < lVar8" (identifier "lVar25") (< "<") (identifier "lVar8")) () ")")) (compound_statement "{\n              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);\n            }" ({ "{") (expression_statement "memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);" (call_expression "memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10)" (identifier "memmove") (argument_list "(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10)" (( "(") (binary_expression "puVar10 + lVar25 * 2 + 2" (binary_expression "puVar10 + lVar25 * 2" (identifier "puVar10") (+ "+") (binary_expression "lVar25 * 2" (identifier "lVar25") (* "*") (number_literal "2"))) (+ "+") (number_literal "2")) (, ",") (identifier "__src") (, ",") (binary_expression "(lVar8 - lVar25) * 0x10" (parenthesized_expression "(lVar8 - lVar25)" (( "(") (binary_expression "lVar8 - lVar25" (identifier "lVar8") (- "-") (identifier "lVar25")) () ")")) (* "*") (number_literal "0x10")) () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "*__src = uVar22;" (assignment_expression "*__src = uVar22" (pointer_expression "*__src" (* "*") (identifier "__src")) (= "=") (identifier "uVar22")) (; ";")) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" (identifier "lVar8") (= "=") (binary_expression "lVar8 + 1" (identifier "lVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(__src + 1) = uVar23;" (assignment_expression "*(uint *)(__src + 1) = uVar23" (pointer_expression "*(uint *)(__src + 1)" (* "*") (cast_expression "(uint *)(__src + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__src + 1)" (( "(") (binary_expression "__src + 1" (identifier "__src") (+ "+") (number_literal "1")) () ")")))) (= "=") (identifier "uVar23")) (; ";")) (expression_statement "__src = puVar10;" (assignment_expression "__src = puVar10" (identifier "__src") (= "=") (identifier "puVar10")) (; ";")) (labeled_statement "LAB_00114119:\n          uVar32 = uVar32 + 1;" (statement_identifier "LAB_00114119") (: ":") (expression_statement "uVar32 = uVar32 + 1;" (assignment_expression "uVar32 = uVar32 + 1" (identifier "uVar32") (= "=") (binary_expression "uVar32 + 1" (identifier "uVar32") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);" (assignment_expression "plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" (identifier "plVar15") (= "=") (cast_expression "(long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18)" (( "(") (binary_expression "lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18" (identifier "lVar21") (+ "+") (binary_expression "*(long *)(lVar26 + local_100 * 0x10) * 0x18" (pointer_expression "*(long *)(lVar26 + local_100 * 0x10)" (* "*") (cast_expression "(long *)(lVar26 + local_100 * 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar26 + local_100 * 0x10)" (( "(") (binary_expression "lVar26 + local_100 * 0x10" (identifier "lVar26") (+ "+") (binary_expression "local_100 * 0x10" (identifier "local_100") (* "*") (number_literal "0x10"))) () ")")))) (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar32 < (ulong)plVar15[1])" (( "(") (binary_expression "uVar32 < (ulong)plVar15[1]" (identifier "uVar32") (< "<") (cast_expression "(ulong)plVar15[1]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "plVar15[1]" (identifier "plVar15") ([ "[") (number_literal "1") (] "]")))) () ")")) (; ";")) (expression_statement "uVar22 = *(ulong *)(local_f8 + 0x10);" (assignment_expression "uVar22 = *(ulong *)(local_f8 + 0x10)" (identifier "uVar22") (= "=") (pointer_expression "*(ulong *)(local_f8 + 0x10)" (* "*") (cast_expression "(ulong *)(local_f8 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_f8 + 0x10)" (( "(") (binary_expression "local_f8 + 0x10" (identifier "local_f8") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}"))) (expression_statement "local_100 = local_100 + 1;" (assignment_expression "local_100 = local_100 + 1" (identifier "local_100") (= "=") (binary_expression "local_100 + 1" (identifier "local_100") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_100 < uVar22)" (( "(") (binary_expression "local_100 < uVar22" (identifier "local_100") (< "<") (identifier "uVar22")) () ")")) (; ";")) (} "}")))) (expression_statement "uVar13 = *(ulong *)(param_2 + 0x300);" (assignment_expression "uVar13 = *(ulong *)(param_2 + 0x300)" (identifier "uVar13") (= "=") (pointer_expression "*(ulong *)(param_2 + 0x300)" (* "*") (cast_expression "(ulong *)(param_2 + 0x300)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x300)" (( "(") (binary_expression "param_2 + 0x300" (identifier "param_2") (+ "+") (number_literal "0x300")) () ")"))))) (; ";")) (if_statement "if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) goto LAB_00114c1c;" (if "if") (parenthesized_expression "(((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0))" (( "(") (binary_expression "((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)" (parenthesized_expression "((long)(uVar13 << 4) < 0)" (( "(") (binary_expression "(long)(uVar13 << 4) < 0" (cast_expression "(long)(uVar13 << 4)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(uVar13 << 4)" (( "(") (binary_expression "uVar13 << 4" (identifier "uVar13") (<< "<<") (number_literal "4")) () ")"))) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar13 >> 0x3c != 0)" (( "(") (binary_expression "uVar13 >> 0x3c != 0" (binary_expression "uVar13 >> 0x3c" (identifier "uVar13") (>> ">>") (number_literal "0x3c")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00114c1c;" (goto "goto") (statement_identifier "LAB_00114c1c") (; ";"))) (expression_statement "local_c8 = (long *)FUN_00120ce0();" (assignment_expression "local_c8 = (long *)FUN_00120ce0()" (identifier "local_c8") (= "=") (cast_expression "(long *)FUN_00120ce0()" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00120ce0()" (identifier "FUN_00120ce0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "local_88._8_4_ = 0xffffffff;" (assignment_expression "local_88._8_4_ = 0xffffffff" (field_expression "local_88._8_4_" (identifier "local_88") (. ".") (field_identifier "_8_4_")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "local_88._0_8_ = 0xffffffffffffffff;" (assignment_expression "local_88._0_8_ = 0xffffffffffffffff" (field_expression "local_88._0_8_" (identifier "local_88") (. ".") (field_identifier "_0_8_")) (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "local_88._12_4_ = 0xffffffff;" (assignment_expression "local_88._12_4_ = 0xffffffff" (field_expression "local_88._12_4_" (identifier "local_88") (. ".") (field_identifier "_12_4_")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" (identifier "local_c0") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_78 = local_88;" (assignment_expression "local_78 = local_88" (identifier "local_78") (= "=") (identifier "local_88")) (; ";")) (expression_statement "local_b8 = uVar13;" (assignment_expression "local_b8 = uVar13" (identifier "local_b8") (= "=") (identifier "uVar13")) (; ";")) (if_statement "if (lVar8 != 0) {\n    lVar21 = 0;\n    uVar23 = (uint)(param_3 >> 6);\n    uVar13 = 1L << (param_3 & 0x3f);\n    puVar10 = __src;\n    do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);\n  }" (if "if") (parenthesized_expression "(lVar8 != 0)" (( "(") (binary_expression "lVar8 != 0" (identifier "lVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    lVar21 = 0;\n    uVar23 = (uint)(param_3 >> 6);\n    uVar13 = 1L << (param_3 & 0x3f);\n    puVar10 = __src;\n    do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);\n  }" ({ "{") (expression_statement "lVar21 = 0;" (assignment_expression "lVar21 = 0" (identifier "lVar21") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar23 = (uint)(param_3 >> 6);" (assignment_expression "uVar23 = (uint)(param_3 >> 6)" (identifier "uVar23") (= "=") (call_expression "(uint)(param_3 >> 6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_3 >> 6)" (( "(") (binary_expression "param_3 >> 6" (identifier "param_3") (>> ">>") (number_literal "6")) () ")")))) (; ";")) (expression_statement "uVar13 = 1L << (param_3 & 0x3f);" (assignment_expression "uVar13 = 1L << (param_3 & 0x3f)" (identifier "uVar13") (= "=") (binary_expression "1L << (param_3 & 0x3f)" (number_literal "1L") (<< "<<") (parenthesized_expression "(param_3 & 0x3f)" (( "(") (binary_expression "param_3 & 0x3f" (identifier "param_3") (& "&") (number_literal "0x3f")) () ")")))) (; ";")) (expression_statement "puVar10 = __src;" (assignment_expression "puVar10 = __src" (identifier "puVar10") (= "=") (identifier "__src")) (; ";")) (do_statement "do {\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    } while (lVar21 != lVar8);" (do "do") (compound_statement "{\n      while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }\n      local_68 = (undefined1  [16])0x0;\n      local_58 = (undefined1  [16])0x0;\n      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);\n      if (uVar12 != param_3) goto LAB_0011482f;\nLAB_0011423a:\n      uVar12 = local_68._0_8_;\n      uVar27 = local_58._0_8_;\n      uVar29 = local_68._8_8_;\n      uVar30 = local_58._8_8_;\n      if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }\nLAB_00114267:\n      uVar6 = local_b8;\n      auVar34._8_8_ = uVar30;\n      auVar34._0_8_ = uVar27;\n      local_78 = auVar34 & local_78;\n      local_88._8_8_ = uVar29 & local_88._8_8_;\n      local_88._0_8_ = uVar12 & local_88._0_8_;\n      if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }\n      local_c8[local_c0 * 2] = uVar22;\n      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;\n      local_c0 = local_c0 + 1;\nLAB_0011435a:\n      lVar21 = lVar21 + 1;\n      puVar10 = puVar10 + 2;\n    }" ({ "{") (while_statement "while( true ) {\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        uVar22 = *puVar10;\n        uVar32 = puVar10[1];\n        uVar19 = (uint)puVar10[1];\n        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);\n        if (uVar12 < 0x100) break;\n        if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }\n        lVar21 = lVar21 + 1;\n        puVar10 = puVar10 + 2;\n        auVar35._8_8_ = uVar30;\n        auVar35._0_8_ = uVar27;\n        local_78 = ~auVar35 & local_78;\n        local_88._8_8_ = ~uVar29 & local_88._8_8_;\n        local_88._0_8_ = ~uVar12 & local_88._0_8_;\n        if (lVar21 == lVar8) goto LAB_001144c5;\n      }" ({ "{") (expression_statement "uVar22 = *puVar10;" (assignment_expression "uVar22 = *puVar10" (identifier "uVar22") (= "=") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (; ";")) (expression_statement "uVar32 = puVar10[1];" (assignment_expression "uVar32 = puVar10[1]" (identifier "uVar32") (= "=") (subscript_expression "puVar10[1]" (identifier "puVar10") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar19 = (uint)puVar10[1];" (assignment_expression "uVar19 = (uint)puVar10[1]" (identifier "uVar19") (= "=") (cast_expression "(uint)puVar10[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar10[1]" (identifier "puVar10") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);" (assignment_expression "uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8)" (identifier "uVar12") (= "=") (pointer_expression "*(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8)" (* "*") (cast_expression "(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x2e0) + uVar22 * 8)" (( "(") (binary_expression "*(long *)(param_2 + 0x2e0) + uVar22 * 8" (pointer_expression "*(long *)(param_2 + 0x2e0)" (* "*") (cast_expression "(long *)(param_2 + 0x2e0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x2e0)" (( "(") (binary_expression "param_2 + 0x2e0" (identifier "param_2") (+ "+") (number_literal "0x2e0")) () ")")))) (+ "+") (binary_expression "uVar22 * 8" (identifier "uVar22") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (uVar12 < 0x100) break;" (if "if") (parenthesized_expression "(uVar12 < 0x100)" (( "(") (binary_expression "uVar12 < 0x100" (identifier "uVar12") (< "<") (number_literal "0x100")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if ((long)uVar12 < 0x114) {\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }\n        else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }" (if "if") (parenthesized_expression "((long)uVar12 < 0x114)" (( "(") (binary_expression "(long)uVar12 < 0x114" (cast_expression "(long)uVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar12")) (< "<") (number_literal "0x114")) () ")")) (compound_statement "{\n          if (uVar12 != 0x10a) goto LAB_0011435a;\n          lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n          pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));\n          local_68 = *pauVar14;\n          local_58 = pauVar14[1];\n          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;\n          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) goto LAB_0011485e;\nLAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;\n        }" ({ "{") (if_statement "if (uVar12 != 0x10a) goto LAB_0011435a;" (if "if") (parenthesized_expression "(uVar12 != 0x10a)" (( "(") (binary_expression "uVar12 != 0x10a" (identifier "uVar12") (!= "!=") (number_literal "0x10a")) () ")")) (goto_statement "goto LAB_0011435a;" (goto "goto") (statement_identifier "LAB_0011435a") (; ";"))) (expression_statement "lVar26 = lVar7 + *(long *)(param_2 + 0x358);" (assignment_expression "lVar26 = lVar7 + *(long *)(param_2 + 0x358)" (identifier "lVar26") (= "=") (binary_expression "lVar7 + *(long *)(param_2 + 0x358)" (identifier "lVar7") (+ "+") (pointer_expression "*(long *)(param_2 + 0x358)" (* "*") (cast_expression "(long *)(param_2 + 0x358)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x358)" (( "(") (binary_expression "param_2 + 0x358" (identifier "param_2") (+ "+") (number_literal "0x358")) () ")")))))) (; ";")) (expression_statement "pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));" (assignment_expression "pauVar14 = (undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250))" (identifier "pauVar14") (= "=") (cast_expression "(undefined1 (*) [16])\n                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250))" (( "(") (type_descriptor "undefined1 (*) [16]" (type_identifier "undefined1") (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250))" (( "(") (binary_expression "*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250)" (binary_expression "*(long *)(param_2 + 0x268) * 0x20" (pointer_expression "*(long *)(param_2 + 0x268)" (* "*") (cast_expression "(long *)(param_2 + 0x268)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x268)" (( "(") (binary_expression "param_2 + 0x268" (identifier "param_2") (+ "+") (number_literal "0x268")) () ")")))) (* "*") (number_literal "0x20")) (+ "+") (pointer_expression "*(long *)(param_2 + 0x250)" (* "*") (cast_expression "(long *)(param_2 + 0x250)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x250)" (( "(") (binary_expression "param_2 + 0x250" (identifier "param_2") (+ "+") (number_literal "0x250")) () ")"))))) () ")")))) (; ";")) (expression_statement "local_68 = *pauVar14;" (assignment_expression "local_68 = *pauVar14" (identifier "local_68") (= "=") (pointer_expression "*pauVar14" (* "*") (identifier "pauVar14"))) (; ";")) (expression_statement "local_58 = pauVar14[1];" (assignment_expression "local_58 = pauVar14[1]" (identifier "local_58") (= "=") (subscript_expression "pauVar14[1]" (identifier "pauVar14") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;" (assignment_expression "bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1" (identifier "bVar18") (= "=") (binary_expression "(byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1" (call_expression "(byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f))" (( "(") (binary_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)" (pointer_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8)" (* "*") (cast_expression "(ulong *)(local_68 + (ulong)uVar23 * 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_68 + (ulong)uVar23 * 8)" (( "(") (binary_expression "local_68 + (ulong)uVar23 * 8" (identifier "local_68") (+ "+") (binary_expression "(ulong)uVar23 * 8" (cast_expression "(ulong)uVar23" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar23")) (* "*") (number_literal "8"))) () ")")))) (>> ">>") (parenthesized_expression "(param_3 & 0x3f)" (( "(") (binary_expression "param_3 & 0x3f" (identifier "param_3") (& "&") (number_literal "0x3f")) () ")"))) () ")"))) (& "&") (number_literal "1"))) (; ";")) (if_statement "if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }" (if "if") (parenthesized_expression "((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0)" (( "(") (binary_expression "(*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0" (parenthesized_expression "(*(byte *)(lVar26 + 0x20) & uVar19 & 7)" (( "(") (binary_expression "*(byte *)(lVar26 + 0x20) & uVar19 & 7" (binary_expression "*(byte *)(lVar26 + 0x20) & uVar19" (pointer_expression "*(byte *)(lVar26 + 0x20)" (* "*") (cast_expression "(byte *)(lVar26 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar26 + 0x20)" (( "(") (binary_expression "lVar26 + 0x20" (identifier "lVar26") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (identifier "uVar19")) (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }\n            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);\n          }" ({ "{") (if_statement "if (*(long *)(lVar26 + 0x38) == 0) {\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }" (if "if") (parenthesized_expression "(*(long *)(lVar26 + 0x38) == 0)" (( "(") (binary_expression "*(long *)(lVar26 + 0x38) == 0" (pointer_expression "*(long *)(lVar26 + 0x38)" (* "*") (cast_expression "(long *)(lVar26 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar26 + 0x38)" (( "(") (binary_expression "lVar26 + 0x38" (identifier "lVar26") (+ "+") (number_literal "0x38")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar16 = FUN_00120ce0(0x10);\n              uVar5 = _UNK_001282a8;\n              uVar4 = _DAT_001282a0;\n              *(undefined8 *)(lVar26 + 0x30) = uVar16;\n              *(undefined8 *)(lVar26 + 0x38) = uVar4;\n              *(undefined8 *)(lVar26 + 0x40) = uVar5;\n              lVar26 = lVar7 + *(long *)(param_2 + 0x358);\n            }" ({ "{") (expression_statement "uVar16 = FUN_00120ce0(0x10);" (assignment_expression "uVar16 = FUN_00120ce0(0x10)" (identifier "uVar16") (= "=") (call_expression "FUN_00120ce0(0x10)" (identifier "FUN_00120ce0") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")")))) (; ";")) (expression_statement "uVar5 = _UNK_001282a8;" (assignment_expression "uVar5 = _UNK_001282a8" (identifier "uVar5") (= "=") (identifier "_UNK_001282a8")) (; ";")) (expression_statement "uVar4 = _DAT_001282a0;" (assignment_expression "uVar4 = _DAT_001282a0" (identifier "uVar4") (= "=") (identifier "_DAT_001282a0")) (; ";")) (expression_statement "*(undefined8 *)(lVar26 + 0x30) = uVar16;" (assignment_expression "*(undefined8 *)(lVar26 + 0x30) = uVar16" (pointer_expression "*(undefined8 *)(lVar26 + 0x30)" (* "*") (cast_expression "(undefined8 *)(lVar26 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar26 + 0x30)" (( "(") (binary_expression "lVar26 + 0x30" (identifier "lVar26") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "*(undefined8 *)(lVar26 + 0x38) = uVar4;" (assignment_expression "*(undefined8 *)(lVar26 + 0x38) = uVar4" (pointer_expression "*(undefined8 *)(lVar26 + 0x38)" (* "*") (cast_expression "(undefined8 *)(lVar26 + 0x38)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar26 + 0x38)" (( "(") (binary_expression "lVar26 + 0x38" (identifier "lVar26") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "*(undefined8 *)(lVar26 + 0x40) = uVar5;" (assignment_expression "*(undefined8 *)(lVar26 + 0x40) = uVar5" (pointer_expression "*(undefined8 *)(lVar26 + 0x40)" (* "*") (cast_expression "(undefined8 *)(lVar26 + 0x40)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar26 + 0x40)" (( "(") (binary_expression "lVar26 + 0x40" (identifier "lVar26") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "lVar26 = lVar7 + *(long *)(param_2 + 0x358);" (assignment_expression "lVar26 = lVar7 + *(long *)(param_2 + 0x358)" (identifier "lVar26") (= "=") (binary_expression "lVar7 + *(long *)(param_2 + 0x358)" (identifier "lVar7") (+ "+") (pointer_expression "*(long *)(param_2 + 0x358)" (* "*") (cast_expression "(long *)(param_2 + 0x358)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x358)" (( "(") (binary_expression "param_2 + 0x358" (identifier "param_2") (+ "+") (number_literal "0x358")) () ")")))))) (; ";")) (} "}"))) (expression_statement "FUN_00112200(uVar22,uVar32,lVar26 + 0x30);" (call_expression "FUN_00112200(uVar22,uVar32,lVar26 + 0x30)" (identifier "FUN_00112200") (argument_list "(uVar22,uVar32,lVar26 + 0x30)" (( "(") (identifier "uVar22") (, ",") (identifier "uVar32") (, ",") (binary_expression "lVar26 + 0x30" (identifier "lVar26") (+ "+") (number_literal "0x30")) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar12 = local_68._0_8_;" (assignment_expression "uVar12 = local_68._0_8_" (identifier "uVar12") (= "=") (field_expression "local_68._0_8_" (identifier "local_68") (. ".") (field_identifier "_0_8_"))) (; ";")) (expression_statement "uVar27 = local_58._0_8_;" (assignment_expression "uVar27 = local_58._0_8_" (identifier "uVar27") (= "=") (field_expression "local_58._0_8_" (identifier "local_58") (. ".") (field_identifier "_0_8_"))) (; ";")) (expression_statement "uVar29 = local_68._8_8_;" (assignment_expression "uVar29 = local_68._8_8_" (identifier "uVar29") (= "=") (field_expression "local_68._8_8_" (identifier "local_68") (. ".") (field_identifier "_8_8_"))) (; ";")) (expression_statement "uVar30 = local_58._8_8_;" (assignment_expression "uVar30 = local_58._8_8_" (identifier "uVar30") (= "=") (field_expression "local_58._8_8_" (identifier "local_58") (. ".") (field_identifier "_8_8_"))) (; ";")) (if_statement "if (uVar19 != 0x1ff) goto LAB_0011485e;" (if "if") (parenthesized_expression "(uVar19 != 0x1ff)" (( "(") (binary_expression "uVar19 != 0x1ff" (identifier "uVar19") (!= "!=") (number_literal "0x1ff")) () ")")) (goto_statement "goto LAB_0011485e;" (goto "goto") (statement_identifier "LAB_0011485e") (; ";"))) (labeled_statement "LAB_0011445b:\n          if (bVar18 != 0) goto LAB_00114267;" (statement_identifier "LAB_0011445b") (: ":") (if_statement "if (bVar18 != 0) goto LAB_00114267;" (if "if") (parenthesized_expression "(bVar18 != 0)" (( "(") (binary_expression "bVar18 != 0" (identifier "bVar18") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00114267;" (goto "goto") (statement_identifier "LAB_00114267") (; ";")))) (} "}")) (else_clause "else {\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }" (else "else") (compound_statement "{\n          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);\n          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);\n          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);\n          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;\nLAB_0011482f:\n          bVar18 = 0;\n          uVar12 = local_68._0_8_;\n          uVar27 = local_58._0_8_;\n          uVar29 = local_68._8_8_;\n          uVar30 = local_58._8_8_;\n          if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }\n        }" ({ "{") (expression_statement "lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);" (assignment_expression "lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250)" (identifier "lVar26") (= "=") (binary_expression "uVar12 * 0x20 + *(long *)(param_2 + 0x250)" (binary_expression "uVar12 * 0x20" (identifier "uVar12") (* "*") (number_literal "0x20")) (+ "+") (pointer_expression "*(long *)(param_2 + 0x250)" (* "*") (cast_expression "(long *)(param_2 + 0x250)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x250)" (( "(") (binary_expression "param_2 + 0x250" (identifier "param_2") (+ "+") (number_literal "0x250")) () ")")))))) (; ";")) (expression_statement "local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);" (assignment_expression "local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280)" (identifier "local_68") (= "=") (pointer_expression "*(undefined1 (*) [16])(lVar26 + -0x2280)" (* "*") (cast_expression "(undefined1 (*) [16])(lVar26 + -0x2280)" (( "(") (type_descriptor "undefined1 (*) [16]" (type_identifier "undefined1") (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (parenthesized_expression "(lVar26 + -0x2280)" (( "(") (binary_expression "lVar26 + -0x2280" (identifier "lVar26") (+ "+") (number_literal "-0x2280")) () ")"))))) (; ";")) (expression_statement "local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);" (assignment_expression "local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270)" (identifier "local_58") (= "=") (pointer_expression "*(undefined1 (*) [16])(lVar26 + -0x2270)" (* "*") (cast_expression "(undefined1 (*) [16])(lVar26 + -0x2270)" (( "(") (type_descriptor "undefined1 (*) [16]" (type_identifier "undefined1") (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (parenthesized_expression "(lVar26 + -0x2270)" (( "(") (binary_expression "lVar26 + -0x2270" (identifier "lVar26") (+ "+") (number_literal "-0x2270")) () ")"))))) (; ";")) (if_statement "if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;" (if "if") (parenthesized_expression "((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0)" (( "(") (binary_expression "(*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0" (parenthesized_expression "(*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13)" (( "(") (binary_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13" (pointer_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8)" (* "*") (cast_expression "(ulong *)(local_68 + (ulong)uVar23 * 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_68 + (ulong)uVar23 * 8)" (( "(") (binary_expression "local_68 + (ulong)uVar23 * 8" (identifier "local_68") (+ "+") (binary_expression "(ulong)uVar23 * 8" (cast_expression "(ulong)uVar23" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar23")) (* "*") (number_literal "8"))) () ")")))) (& "&") (identifier "uVar13")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0011423a;" (goto "goto") (statement_identifier "LAB_0011423a") (; ";"))) (labeled_statement "LAB_0011482f:\n          bVar18 = 0;" (statement_identifier "LAB_0011482f") (: ":") (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" (identifier "bVar18") (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar12 = local_68._0_8_;" (assignment_expression "uVar12 = local_68._0_8_" (identifier "uVar12") (= "=") (field_expression "local_68._0_8_" (identifier "local_68") (. ".") (field_identifier "_0_8_"))) (; ";")) (expression_statement "uVar27 = local_58._0_8_;" (assignment_expression "uVar27 = local_58._0_8_" (identifier "uVar27") (= "=") (field_expression "local_58._0_8_" (identifier "local_58") (. ".") (field_identifier "_0_8_"))) (; ";")) (expression_statement "uVar29 = local_68._8_8_;" (assignment_expression "uVar29 = local_68._8_8_" (identifier "uVar29") (= "=") (field_expression "local_68._8_8_" (identifier "local_68") (. ".") (field_identifier "_8_8_"))) (; ";")) (expression_statement "uVar30 = local_58._8_8_;" (assignment_expression "uVar30 = local_58._8_8_" (identifier "uVar30") (= "=") (field_expression "local_58._8_8_" (identifier "local_58") (. ".") (field_identifier "_8_8_"))) (; ";")) (if_statement "if (uVar19 != 0x1ff) {\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }" (if "if") (parenthesized_expression "(uVar19 != 0x1ff)" (( "(") (binary_expression "uVar19 != 0x1ff" (identifier "uVar19") (!= "!=") (number_literal "0x1ff")) () ")")) (compound_statement "{\nLAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);\n            uVar12 = local_68._0_8_;\n            uVar27 = local_58._0_8_;\n            uVar29 = local_68._8_8_;\n            uVar30 = local_58._8_8_;\n            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }\n            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;\n            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;\n          }" ({ "{") (labeled_statement "LAB_0011485e:\n            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);" (statement_identifier "LAB_0011485e") (: ":") (expression_statement "bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);" (assignment_expression "bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7)" (* "*") (cast_expression "(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x358) + 0x20 + lVar7)" (( "(") (binary_expression "*(long *)(param_2 + 0x358) + 0x20 + lVar7" (binary_expression "*(long *)(param_2 + 0x358) + 0x20" (pointer_expression "*(long *)(param_2 + 0x358)" (* "*") (cast_expression "(long *)(param_2 + 0x358)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x358)" (( "(") (binary_expression "param_2 + 0x358" (identifier "param_2") (+ "+") (number_literal "0x358")) () ")")))) (+ "+") (number_literal "0x20")) (+ "+") (identifier "lVar7")) () ")"))))) (; ";"))) (expression_statement "uVar12 = local_68._0_8_;" (assignment_expression "uVar12 = local_68._0_8_" (identifier "uVar12") (= "=") (field_expression "local_68._0_8_" (identifier "local_68") (. ".") (field_identifier "_0_8_"))) (; ";")) (expression_statement "uVar27 = local_58._0_8_;" (assignment_expression "uVar27 = local_58._0_8_" (identifier "uVar27") (= "=") (field_expression "local_58._0_8_" (identifier "local_58") (. ".") (field_identifier "_0_8_"))) (; ";")) (expression_statement "uVar29 = local_68._8_8_;" (assignment_expression "uVar29 = local_68._8_8_" (identifier "uVar29") (= "=") (field_expression "local_68._8_8_" (identifier "local_68") (. ".") (field_identifier "_8_8_"))) (; ";")) (expression_statement "uVar30 = local_58._8_8_;" (assignment_expression "uVar30 = local_58._8_8_" (identifier "uVar30") (= "=") (field_expression "local_58._8_8_" (identifier "local_58") (. ".") (field_identifier "_8_8_"))) (; ";")) (if_statement "if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" (if "if") (parenthesized_expression "(((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0)" (( "(") (binary_expression "((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0" (parenthesized_expression "((int)uVar19 >> 6 & (uint)bVar2 & 7)" (( "(") (binary_expression "(int)uVar19 >> 6 & (uint)bVar2 & 7" (binary_expression "(int)uVar19 >> 6 & (uint)bVar2" (binary_expression "(int)uVar19 >> 6" (cast_expression "(int)uVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar19")) (>> ">>") (number_literal "6")) (& "&") (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2"))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);\n              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);\n              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" ({ "{") (expression_statement "uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);" (assignment_expression "uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230)" (identifier "uVar12") (= "=") (binary_expression "local_68._0_8_ & ~*(ulong *)(param_2 + 0x230)" (field_expression "local_68._0_8_" (identifier "local_68") (. ".") (field_identifier "_0_8_")) (& "&") (unary_expression "~*(ulong *)(param_2 + 0x230)" (~ "~") (pointer_expression "*(ulong *)(param_2 + 0x230)" (* "*") (cast_expression "(ulong *)(param_2 + 0x230)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x230)" (( "(") (binary_expression "param_2 + 0x230" (identifier "param_2") (+ "+") (number_literal "0x230")) () ")"))))))) (; ";")) (expression_statement "uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);" (assignment_expression "uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238)" (identifier "uVar29") (= "=") (binary_expression "local_68._8_8_ & ~*(ulong *)(param_2 + 0x238)" (field_expression "local_68._8_8_" (identifier "local_68") (. ".") (field_identifier "_8_8_")) (& "&") (unary_expression "~*(ulong *)(param_2 + 0x238)" (~ "~") (pointer_expression "*(ulong *)(param_2 + 0x238)" (* "*") (cast_expression "(ulong *)(param_2 + 0x238)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x238)" (( "(") (binary_expression "param_2 + 0x238" (identifier "param_2") (+ "+") (number_literal "0x238")) () ")"))))))) (; ";")) (expression_statement "local_68._8_8_ = uVar29;" (assignment_expression "local_68._8_8_ = uVar29" (field_expression "local_68._8_8_" (identifier "local_68") (. ".") (field_identifier "_8_8_")) (= "=") (identifier "uVar29")) (; ";")) (expression_statement "local_68._0_8_ = uVar12;" (assignment_expression "local_68._0_8_ = uVar12" (field_expression "local_68._0_8_" (identifier "local_68") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);" (assignment_expression "uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240)" (identifier "uVar27") (= "=") (binary_expression "local_58._0_8_ & ~*(ulong *)(param_2 + 0x240)" (field_expression "local_58._0_8_" (identifier "local_58") (. ".") (field_identifier "_0_8_")) (& "&") (unary_expression "~*(ulong *)(param_2 + 0x240)" (~ "~") (pointer_expression "*(ulong *)(param_2 + 0x240)" (* "*") (cast_expression "(ulong *)(param_2 + 0x240)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x240)" (( "(") (binary_expression "param_2 + 0x240" (identifier "param_2") (+ "+") (number_literal "0x240")) () ")"))))))) (; ";")) (expression_statement "uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);" (assignment_expression "uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248)" (identifier "uVar30") (= "=") (binary_expression "local_58._8_8_ & ~*(ulong *)(param_2 + 0x248)" (field_expression "local_58._8_8_" (identifier "local_58") (. ".") (field_identifier "_8_8_")) (& "&") (unary_expression "~*(ulong *)(param_2 + 0x248)" (~ "~") (pointer_expression "*(ulong *)(param_2 + 0x248)" (* "*") (cast_expression "(ulong *)(param_2 + 0x248)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x248)" (( "(") (binary_expression "param_2 + 0x248" (identifier "param_2") (+ "+") (number_literal "0x248")) () ")"))))))) (; ";")) (expression_statement "local_58._8_8_ = uVar30;" (assignment_expression "local_58._8_8_ = uVar30" (field_expression "local_58._8_8_" (identifier "local_58") (. ".") (field_identifier "_8_8_")) (= "=") (identifier "uVar30")) (; ";")) (expression_statement "local_58._0_8_ = uVar27;" (assignment_expression "local_58._0_8_ = uVar27" (field_expression "local_58._0_8_" (identifier "local_58") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar27")) (; ";")) (} "}"))) (if_statement "if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" (if "if") (parenthesized_expression "(((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0)" (( "(") (binary_expression "((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0" (parenthesized_expression "((int)uVar19 >> 3 & (uint)bVar2 & 7)" (( "(") (binary_expression "(int)uVar19 >> 3 & (uint)bVar2 & 7" (binary_expression "(int)uVar19 >> 3 & (uint)bVar2" (binary_expression "(int)uVar19 >> 3" (cast_expression "(int)uVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar19")) (>> ">>") (number_literal "3")) (& "&") (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2"))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);\n              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);\n              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" ({ "{") (expression_statement "uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);" (assignment_expression "uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210)" (identifier "uVar12") (= "=") (binary_expression "uVar12 & ~*(ulong *)(param_2 + 0x210)" (identifier "uVar12") (& "&") (unary_expression "~*(ulong *)(param_2 + 0x210)" (~ "~") (pointer_expression "*(ulong *)(param_2 + 0x210)" (* "*") (cast_expression "(ulong *)(param_2 + 0x210)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x210)" (( "(") (binary_expression "param_2 + 0x210" (identifier "param_2") (+ "+") (number_literal "0x210")) () ")"))))))) (; ";")) (expression_statement "uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);" (assignment_expression "uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218)" (identifier "uVar29") (= "=") (binary_expression "uVar29 & ~*(ulong *)(param_2 + 0x218)" (identifier "uVar29") (& "&") (unary_expression "~*(ulong *)(param_2 + 0x218)" (~ "~") (pointer_expression "*(ulong *)(param_2 + 0x218)" (* "*") (cast_expression "(ulong *)(param_2 + 0x218)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x218)" (( "(") (binary_expression "param_2 + 0x218" (identifier "param_2") (+ "+") (number_literal "0x218")) () ")"))))))) (; ";")) (expression_statement "local_68._8_8_ = uVar29;" (assignment_expression "local_68._8_8_ = uVar29" (field_expression "local_68._8_8_" (identifier "local_68") (. ".") (field_identifier "_8_8_")) (= "=") (identifier "uVar29")) (; ";")) (expression_statement "local_68._0_8_ = uVar12;" (assignment_expression "local_68._0_8_ = uVar12" (field_expression "local_68._0_8_" (identifier "local_68") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);" (assignment_expression "uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220)" (identifier "uVar27") (= "=") (binary_expression "uVar27 & ~*(ulong *)(param_2 + 0x220)" (identifier "uVar27") (& "&") (unary_expression "~*(ulong *)(param_2 + 0x220)" (~ "~") (pointer_expression "*(ulong *)(param_2 + 0x220)" (* "*") (cast_expression "(ulong *)(param_2 + 0x220)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x220)" (( "(") (binary_expression "param_2 + 0x220" (identifier "param_2") (+ "+") (number_literal "0x220")) () ")"))))))) (; ";")) (expression_statement "uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);" (assignment_expression "uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228)" (identifier "uVar30") (= "=") (binary_expression "uVar30 & ~*(ulong *)(param_2 + 0x228)" (identifier "uVar30") (& "&") (unary_expression "~*(ulong *)(param_2 + 0x228)" (~ "~") (pointer_expression "*(ulong *)(param_2 + 0x228)" (* "*") (cast_expression "(ulong *)(param_2 + 0x228)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x228)" (( "(") (binary_expression "param_2 + 0x228" (identifier "param_2") (+ "+") (number_literal "0x228")) () ")"))))))) (; ";")) (expression_statement "local_58._8_8_ = uVar30;" (assignment_expression "local_58._8_8_ = uVar30" (field_expression "local_58._8_8_" (identifier "local_58") (. ".") (field_identifier "_8_8_")) (= "=") (identifier "uVar30")) (; ";")) (expression_statement "local_58._0_8_ = uVar27;" (assignment_expression "local_58._0_8_ = uVar27" (field_expression "local_58._0_8_" (identifier "local_58") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar27")) (; ";")) (} "}"))) (if_statement "if ((uVar19 & bVar2 & 7) == 0) {\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" (if "if") (parenthesized_expression "((uVar19 & bVar2 & 7) == 0)" (( "(") (binary_expression "(uVar19 & bVar2 & 7) == 0" (parenthesized_expression "(uVar19 & bVar2 & 7)" (( "(") (binary_expression "uVar19 & bVar2 & 7" (binary_expression "uVar19 & bVar2" (identifier "uVar19") (& "&") (identifier "bVar2")) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));\n              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));\n              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));\n              local_68._8_8_ = uVar29;\n              local_68._0_8_ = uVar12;\n              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));\n              local_58._8_8_ = uVar30;\n              local_58._0_8_ = uVar27;\n            }" ({ "{") (expression_statement "uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));" (assignment_expression "uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230))" (identifier "uVar12") (= "=") (binary_expression "uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230))" (identifier "uVar12") (& "&") (parenthesized_expression "(*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230))" (( "(") (binary_expression "*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230)" (pointer_expression "*(ulong *)(param_2 + 0x210)" (* "*") (cast_expression "(ulong *)(param_2 + 0x210)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x210)" (( "(") (binary_expression "param_2 + 0x210" (identifier "param_2") (+ "+") (number_literal "0x210")) () ")")))) (| "|") (pointer_expression "*(ulong *)(param_2 + 0x230)" (* "*") (cast_expression "(ulong *)(param_2 + 0x230)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x230)" (( "(") (binary_expression "param_2 + 0x230" (identifier "param_2") (+ "+") (number_literal "0x230")) () ")"))))) () ")")))) (; ";")) (expression_statement "uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));" (assignment_expression "uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238))" (identifier "uVar29") (= "=") (binary_expression "uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238))" (identifier "uVar29") (& "&") (parenthesized_expression "(*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238))" (( "(") (binary_expression "*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238)" (pointer_expression "*(ulong *)(param_2 + 0x218)" (* "*") (cast_expression "(ulong *)(param_2 + 0x218)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x218)" (( "(") (binary_expression "param_2 + 0x218" (identifier "param_2") (+ "+") (number_literal "0x218")) () ")")))) (| "|") (pointer_expression "*(ulong *)(param_2 + 0x238)" (* "*") (cast_expression "(ulong *)(param_2 + 0x238)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x238)" (( "(") (binary_expression "param_2 + 0x238" (identifier "param_2") (+ "+") (number_literal "0x238")) () ")"))))) () ")")))) (; ";")) (expression_statement "uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));" (assignment_expression "uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240))" (identifier "uVar27") (= "=") (binary_expression "uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240))" (identifier "uVar27") (& "&") (parenthesized_expression "(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240))" (( "(") (binary_expression "*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)" (pointer_expression "*(ulong *)(param_2 + 0x220)" (* "*") (cast_expression "(ulong *)(param_2 + 0x220)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x220)" (( "(") (binary_expression "param_2 + 0x220" (identifier "param_2") (+ "+") (number_literal "0x220")) () ")")))) (| "|") (pointer_expression "*(ulong *)(param_2 + 0x240)" (* "*") (cast_expression "(ulong *)(param_2 + 0x240)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x240)" (( "(") (binary_expression "param_2 + 0x240" (identifier "param_2") (+ "+") (number_literal "0x240")) () ")"))))) () ")")))) (; ";")) (expression_statement "local_68._8_8_ = uVar29;" (assignment_expression "local_68._8_8_ = uVar29" (field_expression "local_68._8_8_" (identifier "local_68") (. ".") (field_identifier "_8_8_")) (= "=") (identifier "uVar29")) (; ";")) (expression_statement "local_68._0_8_ = uVar12;" (assignment_expression "local_68._0_8_ = uVar12" (field_expression "local_68._0_8_" (identifier "local_68") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));" (assignment_expression "uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248))" (identifier "uVar30") (= "=") (binary_expression "uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248))" (identifier "uVar30") (& "&") (parenthesized_expression "(*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248))" (( "(") (binary_expression "*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248)" (pointer_expression "*(ulong *)(param_2 + 0x228)" (* "*") (cast_expression "(ulong *)(param_2 + 0x228)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x228)" (( "(") (binary_expression "param_2 + 0x228" (identifier "param_2") (+ "+") (number_literal "0x228")) () ")")))) (| "|") (pointer_expression "*(ulong *)(param_2 + 0x248)" (* "*") (cast_expression "(ulong *)(param_2 + 0x248)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x248)" (( "(") (binary_expression "param_2 + 0x248" (identifier "param_2") (+ "+") (number_literal "0x248")) () ")"))))) () ")")))) (; ";")) (expression_statement "local_58._8_8_ = uVar30;" (assignment_expression "local_58._8_8_ = uVar30" (field_expression "local_58._8_8_" (identifier "local_58") (. ".") (field_identifier "_8_8_")) (= "=") (identifier "uVar30")) (; ";")) (expression_statement "local_58._0_8_ = uVar27;" (assignment_expression "local_58._0_8_ = uVar27" (field_expression "local_58._0_8_" (identifier "local_58") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar27")) (; ";")) (} "}"))) (if_statement "if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;" (if "if") (parenthesized_expression "(((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0)" (( "(") (binary_expression "((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0" (parenthesized_expression "((uVar12 == 0 && uVar29 == 0) && uVar27 == 0)" (( "(") (binary_expression "(uVar12 == 0 && uVar29 == 0) && uVar27 == 0" (parenthesized_expression "(uVar12 == 0 && uVar29 == 0)" (( "(") (binary_expression "uVar12 == 0 && uVar29 == 0" (binary_expression "uVar12 == 0" (identifier "uVar12") (== "==") (number_literal "0")) (&& "&&") (binary_expression "uVar29 == 0" (identifier "uVar29") (== "==") (number_literal "0"))) () ")")) (&& "&&") (binary_expression "uVar27 == 0" (identifier "uVar27") (== "==") (number_literal "0"))) () ")")) (&& "&&") (binary_expression "uVar30 == 0" (identifier "uVar30") (== "==") (number_literal "0"))) () ")")) (goto_statement "goto LAB_0011435a;" (goto "goto") (statement_identifier "LAB_0011435a") (; ";"))) (if_statement "if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;" (if "if") (parenthesized_expression "((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0)" (( "(") (binary_expression "(*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0" (parenthesized_expression "(*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13)" (( "(") (binary_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13" (pointer_expression "*(ulong *)(local_68 + (ulong)uVar23 * 8)" (* "*") (cast_expression "(ulong *)(local_68 + (ulong)uVar23 * 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_68 + (ulong)uVar23 * 8)" (( "(") (binary_expression "local_68 + (ulong)uVar23 * 8" (identifier "local_68") (+ "+") (binary_expression "(ulong)uVar23 * 8" (cast_expression "(ulong)uVar23" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar23")) (* "*") (number_literal "8"))) () ")")))) (& "&") (identifier "uVar13")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0011445b;" (goto "goto") (statement_identifier "LAB_0011445b") (; ";"))) (} "}"))) (} "}")))) (expression_statement "lVar21 = lVar21 + 1;" (assignment_expression "lVar21 = lVar21 + 1" (identifier "lVar21") (= "=") (binary_expression "lVar21 + 1" (identifier "lVar21") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar10 = puVar10 + 2;" (assignment_expression "puVar10 = puVar10 + 2" (identifier "puVar10") (= "=") (binary_expression "puVar10 + 2" (identifier "puVar10") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "auVar35._8_8_ = uVar30;" (assignment_expression "auVar35._8_8_ = uVar30" (field_expression "auVar35._8_8_" (identifier "auVar35") (. ".") (field_identifier "_8_8_")) (= "=") (identifier "uVar30")) (; ";")) (expression_statement "auVar35._0_8_ = uVar27;" (assignment_expression "auVar35._0_8_ = uVar27" (field_expression "auVar35._0_8_" (identifier "auVar35") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "local_78 = ~auVar35 & local_78;" (assignment_expression "local_78 = ~auVar35 & local_78" (identifier "local_78") (= "=") (binary_expression "~auVar35 & local_78" (unary_expression "~auVar35" (~ "~") (identifier "auVar35")) (& "&") (identifier "local_78"))) (; ";")) (expression_statement "local_88._8_8_ = ~uVar29 & local_88._8_8_;" (assignment_expression "local_88._8_8_ = ~uVar29 & local_88._8_8_" (field_expression "local_88._8_8_" (identifier "local_88") (. ".") (field_identifier "_8_8_")) (= "=") (binary_expression "~uVar29 & local_88._8_8_" (unary_expression "~uVar29" (~ "~") (identifier "uVar29")) (& "&") (field_expression "local_88._8_8_" (identifier "local_88") (. ".") (field_identifier "_8_8_")))) (; ";")) (expression_statement "local_88._0_8_ = ~uVar12 & local_88._0_8_;" (assignment_expression "local_88._0_8_ = ~uVar12 & local_88._0_8_" (field_expression "local_88._0_8_" (identifier "local_88") (. ".") (field_identifier "_0_8_")) (= "=") (binary_expression "~uVar12 & local_88._0_8_" (unary_expression "~uVar12" (~ "~") (identifier "uVar12")) (& "&") (field_expression "local_88._0_8_" (identifier "local_88") (. ".") (field_identifier "_0_8_")))) (; ";")) (if_statement "if (lVar21 == lVar8) goto LAB_001144c5;" (if "if") (parenthesized_expression "(lVar21 == lVar8)" (( "(") (binary_expression "lVar21 == lVar8" (identifier "lVar21") (== "==") (identifier "lVar8")) () ")")) (goto_statement "goto LAB_001144c5;" (goto "goto") (statement_identifier "LAB_001144c5") (; ";"))) (} "}"))) (expression_statement "local_68 = (undefined1  [16])0x0;" (assignment_expression "local_68 = (undefined1  [16])0x0" (identifier "local_68") (= "=") (cast_expression "(undefined1  [16])0x0" (( "(") (type_descriptor "undefined1  [16]" (type_identifier "undefined1") (abstract_array_declarator "[16]" ([ "[") (number_literal "16") (] "]"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_58 = (undefined1  [16])0x0;" (assignment_expression "local_58 = (undefined1  [16])0x0" (identifier "local_58") (= "=") (cast_expression "(undefined1  [16])0x0" (( "(") (type_descriptor "undefined1  [16]" (type_identifier "undefined1") (abstract_array_declarator "[16]" ([ "[") (number_literal "16") (] "]"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);" (assignment_expression "*(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f)" (pointer_expression "*(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8)" (* "*") (cast_expression "(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8)" (( "(") (binary_expression "local_68 + (uVar12 >> 6 & 0x3ffffff) * 8" (identifier "local_68") (+ "+") (binary_expression "(uVar12 >> 6 & 0x3ffffff) * 8" (parenthesized_expression "(uVar12 >> 6 & 0x3ffffff)" (( "(") (binary_expression "uVar12 >> 6 & 0x3ffffff" (binary_expression "uVar12 >> 6" (identifier "uVar12") (>> ">>") (number_literal "6")) (& "&") (number_literal "0x3ffffff")) () ")")) (* "*") (number_literal "8"))) () ")")))) (= "=") (binary_expression "1L << ((byte)uVar12 & 0x3f)" (number_literal "1L") (<< "<<") (parenthesized_expression "((byte)uVar12 & 0x3f)" (( "(") (binary_expression "(byte)uVar12 & 0x3f" (cast_expression "(byte)uVar12" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar12")) (& "&") (number_literal "0x3f")) () ")")))) (; ";")) (if_statement "if (uVar12 != param_3) goto LAB_0011482f;" (if "if") (parenthesized_expression "(uVar12 != param_3)" (( "(") (binary_expression "uVar12 != param_3" (identifier "uVar12") (!= "!=") (identifier "param_3")) () ")")) (goto_statement "goto LAB_0011482f;" (goto "goto") (statement_identifier "LAB_0011482f") (; ";"))) (labeled_statement "LAB_0011423a:\n      uVar12 = local_68._0_8_;" (statement_identifier "LAB_0011423a") (: ":") (expression_statement "uVar12 = local_68._0_8_;" (assignment_expression "uVar12 = local_68._0_8_" (identifier "uVar12") (= "=") (field_expression "local_68._0_8_" (identifier "local_68") (. ".") (field_identifier "_0_8_"))) (; ";"))) (expression_statement "uVar27 = local_58._0_8_;" (assignment_expression "uVar27 = local_58._0_8_" (identifier "uVar27") (= "=") (field_expression "local_58._0_8_" (identifier "local_58") (. ".") (field_identifier "_0_8_"))) (; ";")) (expression_statement "uVar29 = local_68._8_8_;" (assignment_expression "uVar29 = local_68._8_8_" (identifier "uVar29") (= "=") (field_expression "local_68._8_8_" (identifier "local_68") (. ".") (field_identifier "_8_8_"))) (; ";")) (expression_statement "uVar30 = local_58._8_8_;" (assignment_expression "uVar30 = local_58._8_8_" (identifier "uVar30") (= "=") (field_expression "local_58._8_8_" (identifier "local_58") (. ".") (field_identifier "_8_8_"))) (; ";")) (if_statement "if (uVar19 != 0x1ff) {\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }" (if "if") (parenthesized_expression "(uVar19 != 0x1ff)" (( "(") (binary_expression "uVar19 != 0x1ff" (identifier "uVar19") (!= "!=") (number_literal "0x1ff")) () ")")) (compound_statement "{\n        bVar18 = 1;\n        goto LAB_0011485e;\n      }" ({ "{") (expression_statement "bVar18 = 1;" (assignment_expression "bVar18 = 1" (identifier "bVar18") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0011485e;" (goto "goto") (statement_identifier "LAB_0011485e") (; ";")) (} "}"))) (labeled_statement "LAB_00114267:\n      uVar6 = local_b8;" (statement_identifier "LAB_00114267") (: ":") (expression_statement "uVar6 = local_b8;" (assignment_expression "uVar6 = local_b8" (identifier "uVar6") (= "=") (identifier "local_b8")) (; ";"))) (expression_statement "auVar34._8_8_ = uVar30;" (assignment_expression "auVar34._8_8_ = uVar30" (field_expression "auVar34._8_8_" (identifier "auVar34") (. ".") (field_identifier "_8_8_")) (= "=") (identifier "uVar30")) (; ";")) (expression_statement "auVar34._0_8_ = uVar27;" (assignment_expression "auVar34._0_8_ = uVar27" (field_expression "auVar34._0_8_" (identifier "auVar34") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "local_78 = auVar34 & local_78;" (assignment_expression "local_78 = auVar34 & local_78" (identifier "local_78") (= "=") (binary_expression "auVar34 & local_78" (identifier "auVar34") (& "&") (identifier "local_78"))) (; ";")) (expression_statement "local_88._8_8_ = uVar29 & local_88._8_8_;" (assignment_expression "local_88._8_8_ = uVar29 & local_88._8_8_" (field_expression "local_88._8_8_" (identifier "local_88") (. ".") (field_identifier "_8_8_")) (= "=") (binary_expression "uVar29 & local_88._8_8_" (identifier "uVar29") (& "&") (field_expression "local_88._8_8_" (identifier "local_88") (. ".") (field_identifier "_8_8_")))) (; ";")) (expression_statement "local_88._0_8_ = uVar12 & local_88._0_8_;" (assignment_expression "local_88._0_8_ = uVar12 & local_88._0_8_" (field_expression "local_88._0_8_" (identifier "local_88") (. ".") (field_identifier "_0_8_")) (= "=") (binary_expression "uVar12 & local_88._0_8_" (identifier "uVar12") (& "&") (field_expression "local_88._0_8_" (identifier "local_88") (. ".") (field_identifier "_0_8_")))) (; ";")) (if_statement "if ((long)local_b8 <= local_c0) {\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }" (if "if") (parenthesized_expression "((long)local_b8 <= local_c0)" (( "(") (binary_expression "(long)local_b8 <= local_c0" (cast_expression "(long)local_b8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_b8")) (<= "<=") (identifier "local_c0")) () ")")) (compound_statement "{\n        uVar12 = ((long)local_b8 >> 1) + local_b8;\n        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }\n        if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }\n        if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;\n        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);\n        local_b8 = uVar12;\n      }" ({ "{") (expression_statement "uVar12 = ((long)local_b8 >> 1) + local_b8;" (assignment_expression "uVar12 = ((long)local_b8 >> 1) + local_b8" (identifier "uVar12") (= "=") (binary_expression "((long)local_b8 >> 1) + local_b8" (parenthesized_expression "((long)local_b8 >> 1)" (( "(") (binary_expression "(long)local_b8 >> 1" (cast_expression "(long)local_b8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_b8")) (>> ">>") (number_literal "1")) () ")")) (+ "+") (identifier "local_b8"))) (; ";")) (if_statement "if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }\n        else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }" (if "if") (parenthesized_expression "((SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))" (( "(") (binary_expression "(SCARRY8((long)local_b8 >> 1,local_b8)) ||\n           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" (parenthesized_expression "(SCARRY8((long)local_b8 >> 1,local_b8))" (( "(") (call_expression "SCARRY8((long)local_b8 >> 1,local_b8)" (identifier "SCARRY8") (argument_list "((long)local_b8 >> 1,local_b8)" (( "(") (binary_expression "(long)local_b8 >> 1" (cast_expression "(long)local_b8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_b8")) (>> ">>") (number_literal "1")) (, ",") (identifier "local_b8") () ")"))) () ")")) (|| "||") (parenthesized_expression "(lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" (( "(") (comma_expression "lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)" (assignment_expression "lVar26 = uVar12 * 0x10" (identifier "lVar26") (= "=") (binary_expression "uVar12 * 0x10" (identifier "uVar12") (* "*") (number_literal "0x10"))) (, ",") (binary_expression "SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816(lVar26)" (identifier "SEXT816") (argument_list "(lVar26)" (( "(") (identifier "lVar26") () ")"))) (!= "!=") (binary_expression "SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816((long)uVar12)" (identifier "SEXT816") (argument_list "((long)uVar12)" (( "(") (cast_expression "(long)uVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar12")) () ")"))) (* "*") (call_expression "SEXT816(0x10)" (identifier "SEXT816") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")")))))) () ")"))) () ")")) (compound_statement "{\n          uVar12 = 0x7ffffffffffffff;\n          lVar26 = 0x7ffffffffffffff0;\n        }" ({ "{") (expression_statement "uVar12 = 0x7ffffffffffffff;" (assignment_expression "uVar12 = 0x7ffffffffffffff" (identifier "uVar12") (= "=") (number_literal "0x7ffffffffffffff")) (; ";")) (expression_statement "lVar26 = 0x7ffffffffffffff0;" (assignment_expression "lVar26 = 0x7ffffffffffffff0" (identifier "lVar26") (= "=") (number_literal "0x7ffffffffffffff0")) (; ";")) (} "}")) (else_clause "else if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }" (else "else") (if_statement "if (lVar26 < 0x80) {\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }" (if "if") (parenthesized_expression "(lVar26 < 0x80)" (( "(") (binary_expression "lVar26 < 0x80" (identifier "lVar26") (< "<") (number_literal "0x80")) () ")")) (compound_statement "{\n          lVar26 = 0x80;\n          uVar12 = 8;\n        }" ({ "{") (expression_statement "lVar26 = 0x80;" (assignment_expression "lVar26 = 0x80" (identifier "lVar26") (= "=") (number_literal "0x80")) (; ";")) (expression_statement "uVar12 = 8;" (assignment_expression "uVar12 = 8" (identifier "uVar12") (= "=") (number_literal "8")) (; ";")) (} "}"))))) (if_statement "if (local_c8 == (long *)0x0) {\n          local_b8 = 0;\n        }" (if "if") (parenthesized_expression "(local_c8 == (long *)0x0)" (( "(") (binary_expression "local_c8 == (long *)0x0" (identifier "local_c8") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          local_b8 = 0;\n        }" ({ "{") (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" (identifier "local_b8") (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))\n        goto LAB_00114c1c;" (if "if") (parenthesized_expression "(((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))" (( "(") (binary_expression "((long)(uVar12 - uVar6) < 1) &&\n           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))))" (parenthesized_expression "((long)(uVar12 - uVar6) < 1)" (( "(") (binary_expression "(long)(uVar12 - uVar6) < 1" (cast_expression "(long)(uVar12 - uVar6)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(uVar12 - uVar6)" (( "(") (binary_expression "uVar12 - uVar6" (identifier "uVar12") (- "-") (identifier "uVar6")) () ")"))) (< "<") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))))" (( "(") (parenthesized_expression "(uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))" (( "(") (comma_expression "uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" (assignment_expression "uVar12 = uVar6 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1"))) (, ",") (binary_expression "SCARRY8(uVar6,1) ||\n            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" (call_expression "SCARRY8(uVar6,1)" (identifier "SCARRY8") (argument_list "(uVar6,1)" (( "(") (identifier "uVar6") (, ",") (number_literal "1") () ")"))) (|| "||") (parenthesized_expression "(lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))" (( "(") (comma_expression "lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)" (assignment_expression "lVar26 = uVar12 * 0x10" (identifier "lVar26") (= "=") (binary_expression "uVar12 * 0x10" (identifier "uVar12") (* "*") (number_literal "0x10"))) (, ",") (binary_expression "SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816(lVar26)" (identifier "SEXT816") (argument_list "(lVar26)" (( "(") (identifier "lVar26") () ")"))) (!= "!=") (binary_expression "SEXT816((long)uVar12) * SEXT816(0x10)" (call_expression "SEXT816((long)uVar12)" (identifier "SEXT816") (argument_list "((long)uVar12)" (( "(") (cast_expression "(long)uVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar12")) () ")"))) (* "*") (call_expression "SEXT816(0x10)" (identifier "SEXT816") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")")))))) () ")")))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_00114c1c;" (goto "goto") (statement_identifier "LAB_00114c1c") (; ";"))) (expression_statement "local_c8 = (long *)FUN_00120d00(local_c8,lVar26);" (assignment_expression "local_c8 = (long *)FUN_00120d00(local_c8,lVar26)" (identifier "local_c8") (= "=") (cast_expression "(long *)FUN_00120d00(local_c8,lVar26)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00120d00(local_c8,lVar26)" (identifier "FUN_00120d00") (argument_list "(local_c8,lVar26)" (( "(") (identifier "local_c8") (, ",") (identifier "lVar26") () ")"))))) (; ";")) (expression_statement "local_b8 = uVar12;" (assignment_expression "local_b8 = uVar12" (identifier "local_b8") (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (expression_statement "local_c8[local_c0 * 2] = uVar22;" (assignment_expression "local_c8[local_c0 * 2] = uVar22" (subscript_expression "local_c8[local_c0 * 2]" (identifier "local_c8") ([ "[") (binary_expression "local_c0 * 2" (identifier "local_c0") (* "*") (number_literal "2")) (] "]")) (= "=") (identifier "uVar22")) (; ";")) (expression_statement "*(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;" (assignment_expression "*(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32" (pointer_expression "*(int *)(local_c8 + local_c0 * 2 + 1)" (* "*") (cast_expression "(int *)(local_c8 + local_c0 * 2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_c8 + local_c0 * 2 + 1)" (( "(") (binary_expression "local_c8 + local_c0 * 2 + 1" (binary_expression "local_c8 + local_c0 * 2" (identifier "local_c8") (+ "+") (binary_expression "local_c0 * 2" (identifier "local_c0") (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (= "=") (cast_expression "(int)uVar32" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar32"))) (; ";")) (expression_statement "local_c0 = local_c0 + 1;" (assignment_expression "local_c0 = local_c0 + 1" (identifier "local_c0") (= "=") (binary_expression "local_c0 + 1" (identifier "local_c0") (+ "+") (number_literal "1"))) (; ";")) (labeled_statement "LAB_0011435a:\n      lVar21 = lVar21 + 1;" (statement_identifier "LAB_0011435a") (: ":") (expression_statement "lVar21 = lVar21 + 1;" (assignment_expression "lVar21 = lVar21 + 1" (identifier "lVar21") (= "=") (binary_expression "lVar21 + 1" (identifier "lVar21") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "puVar10 = puVar10 + 2;" (assignment_expression "puVar10 = puVar10 + 2" (identifier "puVar10") (= "=") (binary_expression "puVar10 + 2" (identifier "puVar10") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar21 != lVar8)" (( "(") (binary_expression "lVar21 != lVar8" (identifier "lVar21") (!= "!=") (identifier "lVar8")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_001144c5:\n  uVar13 = *(ulong *)(param_2 + 0x300);" (statement_identifier "LAB_001144c5") (: ":") (expression_statement "uVar13 = *(ulong *)(param_2 + 0x300);" (assignment_expression "uVar13 = *(ulong *)(param_2 + 0x300)" (identifier "uVar13") (= "=") (pointer_expression "*(ulong *)(param_2 + 0x300)" (* "*") (cast_expression "(ulong *)(param_2 + 0x300)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x300)" (( "(") (binary_expression "param_2 + 0x300" (identifier "param_2") (+ "+") (number_literal "0x300")) () ")"))))) (; ";"))) (if_statement "if ((long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0) goto LAB_00114c1c;" (if "if") (parenthesized_expression "((long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0)" (( "(") (binary_expression "(long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0" (binary_expression "(long)(uVar13 << 4) < 0" (cast_expression "(long)(uVar13 << 4)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(uVar13 << 4)" (( "(") (binary_expression "uVar13 << 4" (identifier "uVar13") (<< "<<") (number_literal "4")) () ")"))) (< "<") (number_literal "0")) (|| "||") (binary_expression "uVar13 >> 0x3c != 0" (binary_expression "uVar13 >> 0x3c" (identifier "uVar13") (>> ">>") (number_literal "0x3c")) (!= "!=") (number_literal "0"))) () ")")) (goto_statement "goto LAB_00114c1c;" (goto "goto") (statement_identifier "LAB_00114c1c") (; ";"))) (expression_statement "local_a8 = (void *)FUN_00120ce0();" (assignment_expression "local_a8 = (void *)FUN_00120ce0()" (identifier "local_a8") (= "=") (cast_expression "(void *)FUN_00120ce0()" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00120ce0()" (identifier "FUN_00120ce0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "local_a0 = 0;" (assignment_expression "local_a0 = 0" (identifier "local_a0") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_98 = uVar13;" (assignment_expression "local_98 = uVar13" (identifier "local_98") (= "=") (identifier "uVar13")) (; ";")) (if_statement "if (local_c0 < 1) {\n    if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }\n    goto LAB_001146d6;\n  }" (if "if") (parenthesized_expression "(local_c0 < 1)" (( "(") (binary_expression "local_c0 < 1" (identifier "local_c0") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }\n    goto LAB_001146d6;\n  }" ({ "{") (if_statement "if (*(char *)(param_2 + 0x378) == '\0') {\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }\n    else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }" (if "if") (parenthesized_expression "(*(char *)(param_2 + 0x378) == '\0')" (( "(") (binary_expression "*(char *)(param_2 + 0x378) == '\0'" (pointer_expression "*(char *)(param_2 + 0x378)" (* "*") (cast_expression "(char *)(param_2 + 0x378)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x378)" (( "(") (binary_expression "param_2 + 0x378" (identifier "param_2") (+ "+") (number_literal "0x378")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      lVar21 = -1;\n      lVar8 = -1;\n      lVar7 = lVar21;\n    }" ({ "{") (expression_statement "lVar21 = -1;" (assignment_expression "lVar21 = -1" (identifier "lVar21") (= "=") (number_literal "-1")) (; ";")) (expression_statement "lVar8 = -1;" (assignment_expression "lVar8 = -1" (identifier "lVar8") (= "=") (number_literal "-1")) (; ";")) (expression_statement "lVar7 = lVar21;" (assignment_expression "lVar7 = lVar21" (identifier "lVar7") (= "=") (identifier "lVar21")) (; ";")) (} "}")) (else_clause "else {\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }" (else "else") (compound_statement "{\n      lVar8 = *(long *)(param_2 + 0x3c0);\n      lVar21 = 0;\n      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);\n    }" ({ "{") (expression_statement "lVar8 = *(long *)(param_2 + 0x3c0);" (assignment_expression "lVar8 = *(long *)(param_2 + 0x3c0)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(param_2 + 0x3c0)" (* "*") (cast_expression "(long *)(param_2 + 0x3c0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3c0)" (( "(") (binary_expression "param_2 + 0x3c0" (identifier "param_2") (+ "+") (number_literal "0x3c0")) () ")"))))) (; ";")) (expression_statement "lVar21 = 0;" (assignment_expression "lVar21 = 0" (identifier "lVar21") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);" (assignment_expression "lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1)" (identifier "lVar7") (= "=") (cast_expression "(long)(*(int *)(param_2 + 0x39c) + -1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(*(int *)(param_2 + 0x39c) + -1)" (( "(") (binary_expression "*(int *)(param_2 + 0x39c) + -1" (pointer_expression "*(int *)(param_2 + 0x39c)" (* "*") (cast_expression "(int *)(param_2 + 0x39c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x39c)" (( "(") (binary_expression "param_2 + 0x39c" (identifier "param_2") (+ "+") (number_literal "0x39c")) () ")")))) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (} "}")))) (goto_statement "goto LAB_001146d6;" (goto "goto") (statement_identifier "LAB_001146d6") (; ";")) (} "}"))) (if_statement "if (*(char *)(param_2 + 0x378) != '\0') {\n    if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }\n    FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);\n    FUN_00111e00(&local_a8,&local_a0,&local_c8);\n  }" (if "if") (parenthesized_expression "(*(char *)(param_2 + 0x378) != '\0')" (( "(") (binary_expression "*(char *)(param_2 + 0x378) != '\0'" (pointer_expression "*(char *)(param_2 + 0x378)" (* "*") (cast_expression "(char *)(param_2 + 0x378)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x378)" (( "(") (binary_expression "param_2 + 0x378" (identifier "param_2") (+ "+") (number_literal "0x378")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }\n    FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);\n    FUN_00111e00(&local_a8,&local_a0,&local_c8);\n  }" ({ "{") (if_statement "if (*(char *)(param_2 + 0x3fc) != '\0') {\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }" (if "if") (parenthesized_expression "(*(char *)(param_2 + 0x3fc) != '\0')" (( "(") (binary_expression "*(char *)(param_2 + 0x3fc) != '\0'" (pointer_expression "*(char *)(param_2 + 0x3fc)" (* "*") (cast_expression "(char *)(param_2 + 0x3fc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3fc)" (( "(") (binary_expression "param_2 + 0x3fc" (identifier "param_2") (+ "+") (number_literal "0x3fc")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      lVar8 = 0;\n      do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);\n    }" ({ "{") (expression_statement "lVar8 = 0;" (assignment_expression "lVar8 = 0" (identifier "lVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      } while (lVar21 != local_c0);" (do "do") (compound_statement "{\n        lVar21 = lVar8 + 1;\n        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;\n        lVar8 = lVar21;\n      }" ({ "{") (expression_statement "lVar21 = lVar8 + 1;" (assignment_expression "lVar21 = lVar8 + 1" (identifier "lVar21") (= "=") (binary_expression "lVar8 + 1" (identifier "lVar8") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)\n        goto LAB_00114536;" (if "if") (parenthesized_expression "((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0" (parenthesized_expression "(*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1)" (( "(") (binary_expression "*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1" (pointer_expression "*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2])" (* "*") (cast_expression "(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2])" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2])" (( "(") (binary_expression "*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]" (pointer_expression "*(long *)(param_2 + 0x348)" (* "*") (cast_expression "(long *)(param_2 + 0x348)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x348)" (( "(") (binary_expression "param_2 + 0x348" (identifier "param_2") (+ "+") (number_literal "0x348")) () ")")))) (+ "+") (subscript_expression "local_c8[lVar8 * 2]" (identifier "local_c8") ([ "[") (binary_expression "lVar8 * 2" (identifier "lVar8") (* "*") (number_literal "2")) (] "]"))) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00114536;" (goto "goto") (statement_identifier "LAB_00114536") (; ";"))) (expression_statement "lVar8 = lVar21;" (assignment_expression "lVar8 = lVar21" (identifier "lVar8") (= "=") (identifier "lVar21")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar21 != local_c0)" (( "(") (binary_expression "lVar21 != local_c0" (identifier "lVar21") (!= "!=") (identifier "local_c0")) () ")")) (; ";")) (} "}"))) (expression_statement "FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8);" (call_expression "FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8)" (identifier "FUN_00112390") (argument_list "(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,\n                 &local_c0,0xffffffff,&local_a8)" (( "(") (binary_expression "*(long *)(param_2 + 0x358) + 8" (pointer_expression "*(long *)(param_2 + 0x358)" (* "*") (cast_expression "(long *)(param_2 + 0x358)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x358)" (( "(") (binary_expression "param_2 + 0x358" (identifier "param_2") (+ "+") (number_literal "0x358")) () ")")))) (+ "+") (number_literal "8")) (, ",") (binary_expression "*(long *)(param_2 + 0x358) + 0x10" (pointer_expression "*(long *)(param_2 + 0x358)" (* "*") (cast_expression "(long *)(param_2 + 0x358)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x358)" (( "(") (binary_expression "param_2 + 0x358" (identifier "param_2") (+ "+") (number_literal "0x358")) () ")")))) (+ "+") (number_literal "0x10")) (, ",") (pointer_expression "&local_c8" (& "&") (identifier "local_c8")) (, ",") (pointer_expression "&local_c0" (& "&") (identifier "local_c0")) (, ",") (number_literal "0xffffffff") (, ",") (pointer_expression "&local_a8" (& "&") (identifier "local_a8")) () ")"))) (; ";")) (expression_statement "FUN_00111e00(&local_a8,&local_a0,&local_c8);" (call_expression "FUN_00111e00(&local_a8,&local_a0,&local_c8)" (identifier "FUN_00111e00") (argument_list "(&local_a8,&local_a0,&local_c8)" (( "(") (pointer_expression "&local_a8" (& "&") (identifier "local_a8")) (, ",") (pointer_expression "&local_a0" (& "&") (identifier "local_a0")) (, ",") (pointer_expression "&local_c8" (& "&") (identifier "local_c8")) () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_00114536:\n  uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2;" (statement_identifier "LAB_00114536") (: ":") (expression_statement "uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2;" (assignment_expression "uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2" (identifier "uVar23") (= "=") (binary_expression "(uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2" (call_expression "(uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0)" (( "(") (binary_expression "(local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0" (parenthesized_expression "(local_88._0_8_ & *(ulong *)(param_2 + 0x230))" (( "(") (binary_expression "local_88._0_8_ & *(ulong *)(param_2 + 0x230)" (field_expression "local_88._0_8_" (identifier "local_88") (. ".") (field_identifier "_0_8_")) (& "&") (pointer_expression "*(ulong *)(param_2 + 0x230)" (* "*") (cast_expression "(ulong *)(param_2 + 0x230)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x230)" (( "(") (binary_expression "param_2 + 0x230" (identifier "param_2") (+ "+") (number_literal "0x230")) () ")"))))) () ")")) (!= "!=") (number_literal "0")) () ")"))) (<< "<<") (number_literal "2"))) (; ";"))) (if_statement "if ((local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0) {\n    uVar23 = uVar23 | 2;\n  }" (if "if") (parenthesized_expression "((local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0)" (( "(") (binary_expression "(local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0" (parenthesized_expression "(local_88._0_8_ & *(ulong *)(param_2 + 0x210))" (( "(") (binary_expression "local_88._0_8_ & *(ulong *)(param_2 + 0x210)" (field_expression "local_88._0_8_" (identifier "local_88") (. ".") (field_identifier "_0_8_")) (& "&") (pointer_expression "*(ulong *)(param_2 + 0x210)" (* "*") (cast_expression "(ulong *)(param_2 + 0x210)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x210)" (( "(") (binary_expression "param_2 + 0x210" (identifier "param_2") (+ "+") (number_literal "0x210")) () ")"))))) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar23 = uVar23 | 2;\n  }" ({ "{") (expression_statement "uVar23 = uVar23 | 2;" (assignment_expression "uVar23 = uVar23 | 2" (identifier "uVar23") (= "=") (binary_expression "uVar23 | 2" (identifier "uVar23") (| "|") (number_literal "2"))) (; ";")) (} "}"))) (if_statement "if ((~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }" (if "if") (parenthesized_expression "((~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0)" (( "(") (binary_expression "(~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0" (parenthesized_expression "(~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_)" (( "(") (binary_expression "~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_" (unary_expression "~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210))" (~ "~") (parenthesized_expression "(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210))" (( "(") (binary_expression "*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)" (pointer_expression "*(ulong *)(param_2 + 0x230)" (* "*") (cast_expression "(ulong *)(param_2 + 0x230)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x230)" (( "(") (binary_expression "param_2 + 0x230" (identifier "param_2") (+ "+") (number_literal "0x230")) () ")")))) (| "|") (pointer_expression "*(ulong *)(param_2 + 0x210)" (* "*") (cast_expression "(ulong *)(param_2 + 0x210)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x210)" (( "(") (binary_expression "param_2 + 0x210" (identifier "param_2") (+ "+") (number_literal "0x210")) () ")"))))) () ")"))) (& "&") (field_expression "local_88._0_8_" (identifier "local_88") (. ".") (field_identifier "_0_8_"))) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar23 = uVar23 | 1;\n  }" ({ "{") (expression_statement "uVar23 = uVar23 | 1;" (assignment_expression "uVar23 = uVar23 | 1" (identifier "uVar23") (= "=") (binary_expression "uVar23 | 1" (identifier "uVar23") (| "|") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0) {\n    uVar23 = uVar23 | 4;\n  }" (if "if") (parenthesized_expression "((local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0)" (( "(") (binary_expression "(local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0" (parenthesized_expression "(local_88._8_8_ & *(ulong *)(param_2 + 0x238))" (( "(") (binary_expression "local_88._8_8_ & *(ulong *)(param_2 + 0x238)" (field_expression "local_88._8_8_" (identifier "local_88") (. ".") (field_identifier "_8_8_")) (& "&") (pointer_expression "*(ulong *)(param_2 + 0x238)" (* "*") (cast_expression "(ulong *)(param_2 + 0x238)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x238)" (( "(") (binary_expression "param_2 + 0x238" (identifier "param_2") (+ "+") (number_literal "0x238")) () ")"))))) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar23 = uVar23 | 4;\n  }" ({ "{") (expression_statement "uVar23 = uVar23 | 4;" (assignment_expression "uVar23 = uVar23 | 4" (identifier "uVar23") (= "=") (binary_expression "uVar23 | 4" (identifier "uVar23") (| "|") (number_literal "4"))) (; ";")) (} "}"))) (if_statement "if ((local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0) {\n    uVar23 = uVar23 | 2;\n  }" (if "if") (parenthesized_expression "((local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0)" (( "(") (binary_expression "(local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0" (parenthesized_expression "(local_88._8_8_ & *(ulong *)(param_2 + 0x218))" (( "(") (binary_expression "local_88._8_8_ & *(ulong *)(param_2 + 0x218)" (field_expression "local_88._8_8_" (identifier "local_88") (. ".") (field_identifier "_8_8_")) (& "&") (pointer_expression "*(ulong *)(param_2 + 0x218)" (* "*") (cast_expression "(ulong *)(param_2 + 0x218)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x218)" (( "(") (binary_expression "param_2 + 0x218" (identifier "param_2") (+ "+") (number_literal "0x218")) () ")"))))) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar23 = uVar23 | 2;\n  }" ({ "{") (expression_statement "uVar23 = uVar23 | 2;" (assignment_expression "uVar23 = uVar23 | 2" (identifier "uVar23") (= "=") (binary_expression "uVar23 | 2" (identifier "uVar23") (| "|") (number_literal "2"))) (; ";")) (} "}"))) (if_statement "if ((~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }" (if "if") (parenthesized_expression "((~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0)" (( "(") (binary_expression "(~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0" (parenthesized_expression "(~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_)" (( "(") (binary_expression "~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_" (unary_expression "~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218))" (~ "~") (parenthesized_expression "(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218))" (( "(") (binary_expression "*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)" (pointer_expression "*(ulong *)(param_2 + 0x238)" (* "*") (cast_expression "(ulong *)(param_2 + 0x238)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x238)" (( "(") (binary_expression "param_2 + 0x238" (identifier "param_2") (+ "+") (number_literal "0x238")) () ")")))) (| "|") (pointer_expression "*(ulong *)(param_2 + 0x218)" (* "*") (cast_expression "(ulong *)(param_2 + 0x218)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x218)" (( "(") (binary_expression "param_2 + 0x218" (identifier "param_2") (+ "+") (number_literal "0x218")) () ")"))))) () ")"))) (& "&") (field_expression "local_88._8_8_" (identifier "local_88") (. ".") (field_identifier "_8_8_"))) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar23 = uVar23 | 1;\n  }" ({ "{") (expression_statement "uVar23 = uVar23 | 1;" (assignment_expression "uVar23 = uVar23 | 1" (identifier "uVar23") (= "=") (binary_expression "uVar23 | 1" (identifier "uVar23") (| "|") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }" (if "if") (parenthesized_expression "((*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0)" (( "(") (binary_expression "(*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0" (parenthesized_expression "(*(ulong *)(param_2 + 0x240) & local_78._0_8_)" (( "(") (binary_expression "*(ulong *)(param_2 + 0x240) & local_78._0_8_" (pointer_expression "*(ulong *)(param_2 + 0x240)" (* "*") (cast_expression "(ulong *)(param_2 + 0x240)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x240)" (( "(") (binary_expression "param_2 + 0x240" (identifier "param_2") (+ "+") (number_literal "0x240")) () ")")))) (& "&") (field_expression "local_78._0_8_" (identifier "local_78") (. ".") (field_identifier "_0_8_"))) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar23 = uVar23 | 4;\n  }" ({ "{") (expression_statement "uVar23 = uVar23 | 4;" (assignment_expression "uVar23 = uVar23 | 4" (identifier "uVar23") (= "=") (binary_expression "uVar23 | 4" (identifier "uVar23") (| "|") (number_literal "4"))) (; ";")) (} "}"))) (if_statement "if ((*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 2;\n  }" (if "if") (parenthesized_expression "((*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0)" (( "(") (binary_expression "(*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0" (parenthesized_expression "(*(ulong *)(param_2 + 0x220) & local_78._0_8_)" (( "(") (binary_expression "*(ulong *)(param_2 + 0x220) & local_78._0_8_" (pointer_expression "*(ulong *)(param_2 + 0x220)" (* "*") (cast_expression "(ulong *)(param_2 + 0x220)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x220)" (( "(") (binary_expression "param_2 + 0x220" (identifier "param_2") (+ "+") (number_literal "0x220")) () ")")))) (& "&") (field_expression "local_78._0_8_" (identifier "local_78") (. ".") (field_identifier "_0_8_"))) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar23 = uVar23 | 2;\n  }" ({ "{") (expression_statement "uVar23 = uVar23 | 2;" (assignment_expression "uVar23 = uVar23 | 2" (identifier "uVar23") (= "=") (binary_expression "uVar23 | 2" (identifier "uVar23") (| "|") (number_literal "2"))) (; ";")) (} "}"))) (if_statement "if ((~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0) {\n    uVar23 = uVar23 | 1;\n  }" (if "if") (parenthesized_expression "((~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0)" (( "(") (binary_expression "(~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0" (parenthesized_expression "(~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_)" (( "(") (binary_expression "~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_" (unary_expression "~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240))" (~ "~") (parenthesized_expression "(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240))" (( "(") (binary_expression "*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)" (pointer_expression "*(ulong *)(param_2 + 0x220)" (* "*") (cast_expression "(ulong *)(param_2 + 0x220)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x220)" (( "(") (binary_expression "param_2 + 0x220" (identifier "param_2") (+ "+") (number_literal "0x220")) () ")")))) (| "|") (pointer_expression "*(ulong *)(param_2 + 0x240)" (* "*") (cast_expression "(ulong *)(param_2 + 0x240)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x240)" (( "(") (binary_expression "param_2 + 0x240" (identifier "param_2") (+ "+") (number_literal "0x240")) () ")"))))) () ")"))) (& "&") (field_expression "local_78._0_8_" (identifier "local_78") (. ".") (field_identifier "_0_8_"))) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar23 = uVar23 | 1;\n  }" ({ "{") (expression_statement "uVar23 = uVar23 | 1;" (assignment_expression "uVar23 = uVar23 | 1" (identifier "uVar23") (= "=") (binary_expression "uVar23 | 1" (identifier "uVar23") (| "|") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0) {\n    uVar23 = uVar23 | 4;\n  }" (if "if") (parenthesized_expression "((*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0)" (( "(") (binary_expression "(*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0" (parenthesized_expression "(*(ulong *)(param_2 + 0x248) & local_78._8_8_)" (( "(") (binary_expression "*(ulong *)(param_2 + 0x248) & local_78._8_8_" (pointer_expression "*(ulong *)(param_2 + 0x248)" (* "*") (cast_expression "(ulong *)(param_2 + 0x248)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x248)" (( "(") (binary_expression "param_2 + 0x248" (identifier "param_2") (+ "+") (number_literal "0x248")) () ")")))) (& "&") (field_expression "local_78._8_8_" (identifier "local_78") (. ".") (field_identifier "_8_8_"))) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar23 = uVar23 | 4;\n  }" ({ "{") (expression_statement "uVar23 = uVar23 | 4;" (assignment_expression "uVar23 = uVar23 | 4" (identifier "uVar23") (= "=") (binary_expression "uVar23 | 4" (identifier "uVar23") (| "|") (number_literal "4"))) (; ";")) (} "}"))) (if_statement "if ((local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0) {\n    uVar23 = uVar23 | 2;\n  }" (if "if") (parenthesized_expression "((local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0)" (( "(") (binary_expression "(local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0" (parenthesized_expression "(local_78._8_8_ & *(ulong *)(param_2 + 0x228))" (( "(") (binary_expression "local_78._8_8_ & *(ulong *)(param_2 + 0x228)" (field_expression "local_78._8_8_" (identifier "local_78") (. ".") (field_identifier "_8_8_")) (& "&") (pointer_expression "*(ulong *)(param_2 + 0x228)" (* "*") (cast_expression "(ulong *)(param_2 + 0x228)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x228)" (( "(") (binary_expression "param_2 + 0x228" (identifier "param_2") (+ "+") (number_literal "0x228")) () ")"))))) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar23 = uVar23 | 2;\n  }" ({ "{") (expression_statement "uVar23 = uVar23 | 2;" (assignment_expression "uVar23 = uVar23 | 2" (identifier "uVar23") (= "=") (binary_expression "uVar23 | 2" (identifier "uVar23") (| "|") (number_literal "2"))) (; ";")) (} "}"))) (if_statement "if ((~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0) {\n    if (local_c0 != 0) goto LAB_0011464f;\n    if (uVar23 != 0) goto LAB_00114c0f;\n    lVar21 = -1;\n    lVar7 = -1;\n    lVar8 = lVar21;\n  }\n  else {\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }" (if "if") (parenthesized_expression "((~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0)" (( "(") (binary_expression "(~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0" (parenthesized_expression "(~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_)" (( "(") (binary_expression "~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_" (unary_expression "~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228))" (~ "~") (parenthesized_expression "(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228))" (( "(") (binary_expression "*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)" (pointer_expression "*(ulong *)(param_2 + 0x248)" (* "*") (cast_expression "(ulong *)(param_2 + 0x248)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x248)" (( "(") (binary_expression "param_2 + 0x248" (identifier "param_2") (+ "+") (number_literal "0x248")) () ")")))) (| "|") (pointer_expression "*(ulong *)(param_2 + 0x228)" (* "*") (cast_expression "(ulong *)(param_2 + 0x228)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x228)" (( "(") (binary_expression "param_2 + 0x228" (identifier "param_2") (+ "+") (number_literal "0x228")) () ")"))))) () ")"))) (& "&") (field_expression "local_78._8_8_" (identifier "local_78") (. ".") (field_identifier "_8_8_"))) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (local_c0 != 0) goto LAB_0011464f;\n    if (uVar23 != 0) goto LAB_00114c0f;\n    lVar21 = -1;\n    lVar7 = -1;\n    lVar8 = lVar21;\n  }" ({ "{") (if_statement "if (local_c0 != 0) goto LAB_0011464f;" (if "if") (parenthesized_expression "(local_c0 != 0)" (( "(") (binary_expression "local_c0 != 0" (identifier "local_c0") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0011464f;" (goto "goto") (statement_identifier "LAB_0011464f") (; ";"))) (if_statement "if (uVar23 != 0) goto LAB_00114c0f;" (if "if") (parenthesized_expression "(uVar23 != 0)" (( "(") (binary_expression "uVar23 != 0" (identifier "uVar23") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00114c0f;" (goto "goto") (statement_identifier "LAB_00114c0f") (; ";"))) (expression_statement "lVar21 = -1;" (assignment_expression "lVar21 = -1" (identifier "lVar21") (= "=") (number_literal "-1")) (; ";")) (expression_statement "lVar7 = -1;" (assignment_expression "lVar7 = -1" (identifier "lVar7") (= "=") (number_literal "-1")) (; ";")) (expression_statement "lVar8 = lVar21;" (assignment_expression "lVar8 = lVar21" (identifier "lVar8") (= "=") (identifier "lVar21")) (; ";")) (} "}")) (else_clause "else {\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }" (else "else") (compound_statement "{\n    uVar23 = uVar23 | 1;\n    if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }\n    lVar21 = lVar8;\n    if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }\n    lVar7 = lVar8;\n    if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }\n  }" ({ "{") (expression_statement "uVar23 = uVar23 | 1;" (assignment_expression "uVar23 = uVar23 | 1" (identifier "uVar23") (= "=") (binary_expression "uVar23 | 1" (identifier "uVar23") (| "|") (number_literal "1"))) (; ";")) (if_statement "if (local_c0 == 0) {\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }\n    else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }" (if "if") (parenthesized_expression "(local_c0 == 0)" (( "(") (binary_expression "local_c0 == 0" (identifier "local_c0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00114c0f:\n      uVar33 = 0;\n      uVar31 = 0;\n      uVar19 = 7;\nLAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);\n    }" ({ "{") (labeled_statement "LAB_00114c0f:\n      uVar33 = 0;" (statement_identifier "LAB_00114c0f") (: ":") (expression_statement "uVar33 = 0;" (assignment_expression "uVar33 = 0" (identifier "uVar33") (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" (identifier "uVar31") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar19 = 7;" (assignment_expression "uVar19 = 7" (identifier "uVar19") (= "=") (number_literal "7")) (; ";")) (labeled_statement "LAB_00114bf3:\n      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);" (statement_identifier "LAB_00114bf3") (: ":") (expression_statement "lVar8 = FUN_00112550(param_2,&local_c8,uVar19);" (assignment_expression "lVar8 = FUN_00112550(param_2,&local_c8,uVar19)" (identifier "lVar8") (= "=") (call_expression "FUN_00112550(param_2,&local_c8,uVar19)" (identifier "FUN_00112550") (argument_list "(param_2,&local_c8,uVar19)" (( "(") (identifier "param_2") (, ",") (pointer_expression "&local_c8" (& "&") (identifier "local_c8")) (, ",") (identifier "uVar19") () ")")))) (; ";"))) (} "}")) (else_clause "else {\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }" (else "else") (compound_statement "{\nLAB_0011464f:\n      uVar19 = 0;\n      plVar15 = local_c8;\n      do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);\n      lVar8 = -1;\n      uVar33 = uVar19 & uVar23 & 2;\n      uVar31 = uVar19 & uVar23 & 4;\n      if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }\n    }" ({ "{") (labeled_statement "LAB_0011464f:\n      uVar19 = 0;" (statement_identifier "LAB_0011464f") (: ":") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";"))) (expression_statement "plVar15 = local_c8;" (assignment_expression "plVar15 = local_c8" (identifier "plVar15") (= "=") (identifier "local_c8")) (; ";")) (do_statement "do {\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      } while (local_c8 + local_c0 * 2 != plVar15);" (do "do") (compound_statement "{\n        lVar8 = *plVar15;\n        plVar15 = plVar15 + 2;\n        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);\n      }" ({ "{") (expression_statement "lVar8 = *plVar15;" (assignment_expression "lVar8 = *plVar15" (identifier "lVar8") (= "=") (pointer_expression "*plVar15" (* "*") (identifier "plVar15"))) (; ";")) (expression_statement "plVar15 = plVar15 + 2;" (assignment_expression "plVar15 = plVar15 + 2" (identifier "plVar15") (= "=") (binary_expression "plVar15 + 2" (identifier "plVar15") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);" (assignment_expression "uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4)" (identifier "uVar19") (= "=") (binary_expression "uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4)" (identifier "uVar19") (| "|") (pointer_expression "*(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4)" (* "*") (cast_expression "(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x388) + lVar8 * 4)" (( "(") (binary_expression "*(long *)(param_2 + 0x388) + lVar8 * 4" (pointer_expression "*(long *)(param_2 + 0x388)" (* "*") (cast_expression "(long *)(param_2 + 0x388)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x388)" (( "(") (binary_expression "param_2 + 0x388" (identifier "param_2") (+ "+") (number_literal "0x388")) () ")")))) (+ "+") (binary_expression "lVar8 * 4" (identifier "lVar8") (* "*") (number_literal "4"))) () ")")))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_c8 + local_c0 * 2 != plVar15)" (( "(") (binary_expression "local_c8 + local_c0 * 2 != plVar15" (binary_expression "local_c8 + local_c0 * 2" (identifier "local_c8") (+ "+") (binary_expression "local_c0 * 2" (identifier "local_c0") (* "*") (number_literal "2"))) (!= "!=") (identifier "plVar15")) () ")")) (; ";")) (expression_statement "lVar8 = -1;" (assignment_expression "lVar8 = -1" (identifier "lVar8") (= "=") (number_literal "-1")) (; ";")) (expression_statement "uVar33 = uVar19 & uVar23 & 2;" (assignment_expression "uVar33 = uVar19 & uVar23 & 2" (identifier "uVar33") (= "=") (binary_expression "uVar19 & uVar23 & 2" (binary_expression "uVar19 & uVar23" (identifier "uVar19") (& "&") (identifier "uVar23")) (& "&") (number_literal "2"))) (; ";")) (expression_statement "uVar31 = uVar19 & uVar23 & 4;" (assignment_expression "uVar31 = uVar19 & uVar23 & 4" (identifier "uVar31") (= "=") (binary_expression "uVar19 & uVar23 & 4" (binary_expression "uVar19 & uVar23" (identifier "uVar19") (& "&") (identifier "uVar23")) (& "&") (number_literal "4"))) (; ";")) (if_statement "if ((~uVar19 & uVar23) != 0) {\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }" (if "if") (parenthesized_expression "((~uVar19 & uVar23) != 0)" (( "(") (binary_expression "(~uVar19 & uVar23) != 0" (parenthesized_expression "(~uVar19 & uVar23)" (( "(") (binary_expression "~uVar19 & uVar23" (unary_expression "~uVar19" (~ "~") (identifier "uVar19")) (& "&") (identifier "uVar23")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar19 = uVar19 ^ 7;\n        goto LAB_00114bf3;\n      }" ({ "{") (expression_statement "uVar19 = uVar19 ^ 7;" (assignment_expression "uVar19 = uVar19 ^ 7" (identifier "uVar19") (= "=") (binary_expression "uVar19 ^ 7" (identifier "uVar19") (^ "^") (number_literal "7"))) (; ";")) (goto_statement "goto LAB_00114bf3;" (goto "goto") (statement_identifier "LAB_00114bf3") (; ";")) (} "}"))) (} "}")))) (expression_statement "lVar21 = lVar8;" (assignment_expression "lVar21 = lVar8" (identifier "lVar21") (= "=") (identifier "lVar8")) (; ";")) (if_statement "if (uVar31 != 0) {\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }" (if "if") (parenthesized_expression "(uVar31 != 0)" (( "(") (binary_expression "uVar31 != 0" (identifier "uVar31") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      lVar21 = FUN_00112550(param_2,&local_c8,4);\n    }" ({ "{") (expression_statement "lVar21 = FUN_00112550(param_2,&local_c8,4);" (assignment_expression "lVar21 = FUN_00112550(param_2,&local_c8,4)" (identifier "lVar21") (= "=") (call_expression "FUN_00112550(param_2,&local_c8,4)" (identifier "FUN_00112550") (argument_list "(param_2,&local_c8,4)" (( "(") (identifier "param_2") (, ",") (pointer_expression "&local_c8" (& "&") (identifier "local_c8")) (, ",") (number_literal "4") () ")")))) (; ";")) (} "}"))) (expression_statement "lVar7 = lVar8;" (assignment_expression "lVar7 = lVar8" (identifier "lVar7") (= "=") (identifier "lVar8")) (; ";")) (if_statement "if (uVar33 != 0) {\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }" (if "if") (parenthesized_expression "(uVar33 != 0)" (( "(") (binary_expression "uVar33 != 0" (identifier "uVar33") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      lVar7 = FUN_00112550(param_2,&local_c8,2);\n    }" ({ "{") (expression_statement "lVar7 = FUN_00112550(param_2,&local_c8,2);" (assignment_expression "lVar7 = FUN_00112550(param_2,&local_c8,2)" (identifier "lVar7") (= "=") (call_expression "FUN_00112550(param_2,&local_c8,2)" (identifier "FUN_00112550") (argument_list "(param_2,&local_c8,2)" (( "(") (identifier "param_2") (, ",") (pointer_expression "&local_c8" (& "&") (identifier "local_c8")) (, ",") (number_literal "2") () ")")))) (; ";")) (} "}"))) (} "}")))) (expression_statement "FUN_00111ef0(param_2);" (call_expression "FUN_00111ef0(param_2)" (identifier "FUN_00111ef0") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (labeled_statement "LAB_001146d6:\n  uVar13 = 0;" (statement_identifier "LAB_001146d6") (: ":") (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";"))) (do_statement "do {\n    while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }\n    cVar1 = *(char *)(param_2 + 0xc + uVar13);\n    if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar13] = lVar7;\n    uVar13 = uVar13 + 1;\n  } while (uVar13 != 0x100);" (do "do") (compound_statement "{\n    while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }\n    cVar1 = *(char *)(param_2 + 0xc + uVar13);\n    if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }\n    local_e0[uVar13] = lVar7;\n    uVar13 = uVar13 + 1;\n  }" ({ "{") (while_statement "while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }" (while "while") (parenthesized_expression "((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0)" (( "(") (binary_expression "(*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0" (parenthesized_expression "(*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1)" (( "(") (binary_expression "*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1" (binary_expression "*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f)" (pointer_expression "*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8)" (* "*") (cast_expression "(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8)" (( "(") (binary_expression "local_88 + (uVar13 >> 6 & 0x3ffffff) * 8" (identifier "local_88") (+ "+") (binary_expression "(uVar13 >> 6 & 0x3ffffff) * 8" (parenthesized_expression "(uVar13 >> 6 & 0x3ffffff)" (( "(") (binary_expression "uVar13 >> 6 & 0x3ffffff" (binary_expression "uVar13 >> 6" (identifier "uVar13") (>> ">>") (number_literal "6")) (& "&") (number_literal "0x3ffffff")) () ")")) (* "*") (number_literal "8"))) () ")")))) (>> ">>") (parenthesized_expression "(uVar13 & 0x3f)" (( "(") (binary_expression "uVar13 & 0x3f" (identifier "uVar13") (& "&") (number_literal "0x3f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001146ed:\n      uVar13 = uVar13 + 1;\n      if (uVar13 == 0x100) goto LAB_00114728;\n    }" ({ "{") (labeled_statement "LAB_001146ed:\n      uVar13 = uVar13 + 1;" (statement_identifier "LAB_001146ed") (: ":") (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" (identifier "uVar13") (= "=") (binary_expression "uVar13 + 1" (identifier "uVar13") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if (uVar13 == 0x100) goto LAB_00114728;" (if "if") (parenthesized_expression "(uVar13 == 0x100)" (( "(") (binary_expression "uVar13 == 0x100" (identifier "uVar13") (== "==") (number_literal "0x100")) () ")")) (goto_statement "goto LAB_00114728;" (goto "goto") (statement_identifier "LAB_00114728") (; ";"))) (} "}"))) (expression_statement "cVar1 = *(char *)(param_2 + 0xc + uVar13);" (assignment_expression "cVar1 = *(char *)(param_2 + 0xc + uVar13)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(param_2 + 0xc + uVar13)" (* "*") (cast_expression "(char *)(param_2 + 0xc + uVar13)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc + uVar13)" (( "(") (binary_expression "param_2 + 0xc + uVar13" (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) (+ "+") (identifier "uVar13")) () ")"))))) (; ";")) (if_statement "if (cVar1 != '\x02') {\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }" (if "if") (parenthesized_expression "(cVar1 != '\x02')" (( "(") (binary_expression "cVar1 != '\x02'" (identifier "cVar1") (!= "!=") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n      lVar26 = lVar21;\n      if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }\n      local_e0[uVar13] = lVar26;\n      goto LAB_001146ed;\n    }" ({ "{") (expression_statement "lVar26 = lVar21;" (assignment_expression "lVar26 = lVar21" (identifier "lVar26") (= "=") (identifier "lVar21")) (; ";")) (if_statement "if (cVar1 != '\x04') {\n        lVar26 = lVar8;\n      }" (if "if") (parenthesized_expression "(cVar1 != '\x04')" (( "(") (binary_expression "cVar1 != '\x04'" (identifier "cVar1") (!= "!=") (char_literal "'\x04'" (' "'") (escape_sequence "\x04") (' "'"))) () ")")) (compound_statement "{\n        lVar26 = lVar8;\n      }" ({ "{") (expression_statement "lVar26 = lVar8;" (assignment_expression "lVar26 = lVar8" (identifier "lVar26") (= "=") (identifier "lVar8")) (; ";")) (} "}"))) (expression_statement "local_e0[uVar13] = lVar26;" (assignment_expression "local_e0[uVar13] = lVar26" (subscript_expression "local_e0[uVar13]" (identifier "local_e0") ([ "[") (identifier "uVar13") (] "]")) (= "=") (identifier "lVar26")) (; ";")) (goto_statement "goto LAB_001146ed;" (goto "goto") (statement_identifier "LAB_001146ed") (; ";")) (} "}"))) (expression_statement "local_e0[uVar13] = lVar7;" (assignment_expression "local_e0[uVar13] = lVar7" (subscript_expression "local_e0[uVar13]" (identifier "local_e0") ([ "[") (identifier "uVar13") (] "]")) (= "=") (identifier "lVar7")) (; ";")) (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" (identifier "uVar13") (= "=") (binary_expression "uVar13 + 1" (identifier "uVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar13 != 0x100)" (( "(") (binary_expression "uVar13 != 0x100" (identifier "uVar13") (!= "!=") (number_literal "0x100")) () ")")) (; ";")) (labeled_statement "LAB_00114728:\n  free(local_c8);" (statement_identifier "LAB_00114728") (: ":") (expression_statement "free(local_c8);" (call_expression "free(local_c8)" (identifier "free") (argument_list "(local_c8)" (( "(") (identifier "local_c8") () ")"))) (; ";"))) (expression_statement "free(__src);" (call_expression "free(__src)" (identifier "free") (argument_list "(__src)" (( "(") (identifier "__src") () ")"))) (; ";")) (expression_statement "free(local_a8);" (call_expression "free(local_a8)" (identifier "free") (argument_list "(local_a8)" (( "(") (identifier "local_a8") () ")"))) (; ";")) (expression_statement "bVar18 = *(byte *)(param_2 + 0xb);" (assignment_expression "bVar18 = *(byte *)(param_2 + 0xb)" (identifier "bVar18") (= "=") (pointer_expression "*(byte *)(param_2 + 0xb)" (* "*") (cast_expression "(byte *)(param_2 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xb)" (( "(") (binary_expression "param_2 + 0xb" (identifier "param_2") (+ "+") (number_literal "0xb")) () ")"))))) (; ";")) (if_statement "if ((*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0) {\n    *(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];\n    local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;\n  }" (if "if") (parenthesized_expression "((*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0)" (( "(") (binary_expression "(*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0" (parenthesized_expression "(*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1)" (( "(") (binary_expression "*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1" (binary_expression "*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f)" (pointer_expression "*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8)" (* "*") (cast_expression "(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_88 + (ulong)(bVar18 >> 6) * 8)" (( "(") (binary_expression "local_88 + (ulong)(bVar18 >> 6) * 8" (identifier "local_88") (+ "+") (binary_expression "(ulong)(bVar18 >> 6) * 8" (call_expression "(ulong)(bVar18 >> 6)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar18 >> 6)" (( "(") (binary_expression "bVar18 >> 6" (identifier "bVar18") (>> ">>") (number_literal "6")) () ")"))) (* "*") (number_literal "8"))) () ")")))) (>> ">>") (parenthesized_expression "(bVar18 & 0x3f)" (( "(") (binary_expression "bVar18 & 0x3f" (identifier "bVar18") (& "&") (number_literal "0x3f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];\n    local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;\n  }" ({ "{") (expression_statement "*(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];" (assignment_expression "*(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18]" (pointer_expression "*(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8)" (* "*") (cast_expression "(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x3b8) + param_1 * 8)" (( "(") (binary_expression "*(long *)(param_2 + 0x3b8) + param_1 * 8" (pointer_expression "*(long *)(param_2 + 0x3b8)" (* "*") (cast_expression "(long *)(param_2 + 0x3b8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3b8)" (( "(") (binary_expression "param_2 + 0x3b8" (identifier "param_2") (+ "+") (number_literal "0x3b8")) () ")")))) (+ "+") (binary_expression "param_1 * 8" (identifier "param_1") (* "*") (number_literal "8"))) () ")")))) (= "=") (subscript_expression "local_e0[bVar18]" (identifier "local_e0") ([ "[") (identifier "bVar18") (] "]"))) (; ";")) (expression_statement "local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;" (assignment_expression "local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff" (subscript_expression "local_e0[*(byte *)(param_2 + 0xb)]" (identifier "local_e0") ([ "[") (pointer_expression "*(byte *)(param_2 + 0xb)" (* "*") (cast_expression "(byte *)(param_2 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xb)" (( "(") (binary_expression "param_2 + 0xb" (identifier "param_2") (+ "+") (number_literal "0xb")) () ")")))) (] "]")) (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (} "}"))) (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (if "if") (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (!= "!=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" ({ "{") (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return local_e0[param_3];" (return "return") (subscript_expression "local_e0[param_3]" (identifier "local_e0") ([ "[") (identifier "param_3") (] "]")) (; ";")) (} "}")))

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

type_1 function_1(type_1 var_11,type_2 *d,type_3 var_25)

{
  type_4 *puVar1;
  char var_47;
  type_5 var_31;
  type_6 uVar4;
  long var_48;
  type_7 uVar6;
  type_8 var_42;
  type_9 p;
  size_t *psVar8;
  ptrdiff_t var_37;
  ptrdiff_t pVar10;
  type_9 *p_00;
  long var_17;
  type_8 var_16;
  type_9 *var_21;
  type_8 var_9;
  type_9 *var_32;
  type_1 sVar16;
  type_1 sVar17;
  type_1 sVar18;
  type_10 var_28;
  type_1 *var_6;
  type_1 **ppsVar21;
  type_5 var_27;
  type_4 var_7;
  type_4 var_44;
  type_11 wVar25;
  size_t sVar26;
  type_4 var_8;
  type_1 **ppsVar28;
  type_12 *ppVar29;
  long var_14;
  type_13 *pdVar31;
  type_10 var_30;
  long var_3;
  type_1 sVar34;
  size_t n;
  type_10 var_29;
  type_8 var_12;
  type_12 *var_13;
  type_8 var_23;
  type_4 var_45;
  long var_15;
  long var_1;
  type_4 var_33;
  type_4 var_34;
  type_4 var_35;
  type_4 var_36;
  type_8 var_24;
  type_13 *local_f8;
  type_1 *var_2;
  type_12 var_39;
  type_12 tmp;
  type_14 label;
  type_14 matches;
  
  var_48 = *(long *)(var_1 + 0x28);
  ppsVar21 = d->trans;
  ppsVar28 = ppsVar21;
  if (d->states[var_11].constraint != 0) {
    ppsVar28 = d->fails;
  }
  var_2 = ppsVar28[var_11];
  if (var_2 == (type_1 *)0x0) {
    if (d->trcount < L'Ѐ') {
      wVar25 = d->trcount + L'\x01';
    }
    else {
      var_3 = (long)d->min_trcount;
      if (var_3 < d->tralloc) {
        do {
          var_4(ppsVar21[var_3]);
          var_4(d->fails[var_3]);
          d->fails[var_3] = (type_1 *)0x0;
          ppsVar21 = d->trans;
          ppsVar21[var_3] = (type_1 *)0x0;
          var_3 = var_3 + 1;
        } while (var_3 < d->tralloc);
      }
      wVar25 = L'\x01';
    }
    d->trcount = wVar25;
    var_2 = (type_1 *)var_5(0x800);
    sVar16 = _UNK_00128298;
    sVar34 = _DAT_00128290;
    ppsVar28[var_11] = var_2;
    var_6 = var_2;
    do {
      *var_6 = sVar34;
      var_6[1] = sVar16;
      var_6 = var_6 + 2;
    } while (var_2 + 0x100 != var_6);
  }
  d->success[var_11] = '\0';
  var_27 = d->states[var_11].context;
  uVar4 = d->states[var_11].constraint;
  var_8 = (type_4)uVar4;
  if (((int)var_8 >> 6 & (type_4)var_27 & 7) != 0) {
    d->success[var_11] = d->success[var_11] | 4;
    var_27 = d->states[var_11].context;
    uVar4 = d->states[var_11].constraint;
    var_8 = (type_4)uVar4;
  }
  var_7 = (type_4)var_27;
  if (((int)(type_4)uVar4 >> 3 & var_7 & 7) != 0) {
    d->success[var_11] = d->success[var_11] | 2;
    var_7 = (type_4)d->states[var_11].context;
    var_8 = (type_4)d->states[var_11].constraint;
  }
  if ((var_8 & 7 & var_7) != 0) {
    d->success[var_11] = d->success[var_11] | 1;
  }
  var_9 = d->nleaves;
  if (((long)(var_9 << 4) < 0) || (var_9 >> 0x3c != 0)) {
LAB_00114c1c:
                    /* WARNING: Subroutine does not return */
    var_10();
  }
  p_00 = (type_9 *)var_5(var_9 << 4);
  local_f8 = d->states + var_11;
  var_12 = (local_f8->elems).nelem;
  if (var_12 == 0) {
    var_3 = 0;
  }
  else {
    var_24 = 0;
    var_32 = (local_f8->elems).elems;
    var_3 = 0;
    var_13 = d->follows;
    do {
      var_23 = 0;
      ppVar29 = var_13 + var_32[var_24].index;
      if (ppVar29->nelem != 0) {
        do {
          var_12 = ppVar29->elems[var_23].index;
          var_8 = ppVar29->elems[var_23].constraint;
          var_21 = p_00;
          if (var_3 == 0) {
            if ((long)var_9 < 1) {
              var_15 = 0;
              goto LAB_00114026;
            }
          }
          else {
            var_15 = 0;
            var_14 = var_3;
            do {
              while( true ) {
                var_17 = var_14 + var_15 >> 1;
                var_16 = p_00[var_17].index;
                if (var_16 <= var_12 && var_12 != var_16) break;
                if (var_12 == var_16) {
                  puVar1 = &p_00[var_17].constraint;
                  *puVar1 = *puVar1 | var_8;
                  goto LAB_00114119;
                }
                var_14 = var_17;
                if (var_17 <= var_15) goto LAB_0011401d;
              }
              var_15 = var_17 + 1;
            } while (var_15 < var_14);
LAB_0011401d:
            var_16 = var_9;
            if ((long)var_9 <= var_3) {
LAB_00114026:
              var_16 = ((long)var_9 >> 1) + var_9;
              if ((var_18((long)var_9 >> 1,var_9)) ||
                 (sVar26 = var_16 * 0x10,
                 var_19((long)sVar26) != var_19((long)var_16) * var_19(0x10))) {
                sVar26 = 0x7ffffffffffffff0;
                var_16 = 0x7ffffffffffffff;
              }
              else if ((long)sVar26 < 0x80) {
                var_16 = 8;
                sVar26 = 0x80;
              }
              if ((var_16 == var_9 || (long)(var_16 - var_9) < 0) &&
                 ((var_16 = var_9 + 1, var_18(var_9,1) ||
                  (sVar26 = var_16 * 0x10,
                  var_19((long)sVar26) != var_19((long)var_16) * var_19(0x10)))))
              goto LAB_00114c1c;
              var_21 = (type_9 *)var_20(p_00,sVar26);
              var_13 = d->follows;
              local_f8 = d->states + var_11;
              var_32 = (local_f8->elems).elems;
            }
            p_00 = var_21 + var_15;
            var_9 = var_16;
            if (var_15 < var_3) {
              var_22(var_21 + var_15 + 1,p_00,(var_3 - var_15) * 0x10);
            }
          }
          p_00->index = var_12;
          var_3 = var_3 + 1;
          p_00->constraint = var_8;
          p_00 = var_21;
LAB_00114119:
          var_23 = var_23 + 1;
          ppVar29 = var_13 + var_32[var_24].index;
        } while (var_23 < (type_8)ppVar29->nelem);
        var_12 = (local_f8->elems).nelem;
      }
      var_24 = var_24 + 1;
    } while (var_24 < var_12);
  }
  var_9 = d->nleaves;
  if (((long)(var_9 << 4) < 0) || (var_9 >> 0x3c != 0)) goto LAB_00114c1c;
  var_39.elems = (type_9 *)var_5(var_9 << 4);
  var_39.nelem = 0;
  label.w[0] = 0xffffffffffffffff;
  label.w[1] = 0xffffffffffffffff;
  label.w[2]._0_4_ = 0xffffffff;
  label.w[2]._4_4_ = 0xffffffff;
  label.w[3]._0_4_ = 0xffffffff;
  label.w[3]._4_4_ = 0xffffffff;
  var_39.alloc = var_9;
  if (var_3 != 0) {
    var_15 = 0;
    var_8 = (type_4)(var_25 >> 6);
    var_9 = 1L << (var_25 & 0x3f);
    var_32 = p_00;
    do {
      while( true ) {
        sVar26 = var_32->index;
        uVar6 = *(type_7 *)&var_32->constraint;
        p = *var_32;
        var_7 = var_32->constraint;
        var_12 = d->tokens[sVar26];
        var_35 = (type_4)var_9;
        var_36 = (type_4)(var_9 >> 0x20);
        if (var_12 < 0x100) break;
        if ((long)var_12 < 0x114) {
          if (var_12 != 0x10a) goto LAB_0011435a;
          pdVar31 = d->states + var_11;
          matches.w._0_16_ = *(type_15 (*) [16])d->charclasses[d->canychar].w;
          matches.w._16_16_ = *(type_15 (*) [16])(d->charclasses[d->canychar].w + 2);
          var_27 = (type_5)(matches.w[var_8] >> (var_25 & 0x3f)) & 1;
          if ((pdVar31->context & var_7 & 7) != 0) {
            if ((pdVar31->mbps).nelem == 0) {
              var_21 = (type_9 *)var_5(0x10);
              pVar10 = _UNK_001282a8;
              var_37 = _DAT_001282a0;
              (pdVar31->mbps).elems = var_21;
              (pdVar31->mbps).nelem = var_37;
              (pdVar31->mbps).alloc = pVar10;
              pdVar31 = d->states + var_11;
            }
            var_26(p,&pdVar31->mbps);
          }
          var_28 = matches.w[0];
          var_30 = matches.w[2];
          var_29 = matches.w[1];
          if (var_7 != 0x1ff) goto LAB_0011485e;
LAB_0011445b:
          if (var_27 != 0) goto LAB_00114267;
        }
        else {
          matches.w._0_16_ = *(type_15 (*) [16])d->charclasses[var_12 - 0x114].w;
          matches.w._16_16_ = *(type_15 (*) [16])(d->charclasses[var_12 - 0x114].w + 2);
          if ((matches.w[var_8] & var_9) != 0) goto LAB_0011423a;
LAB_0011482f:
          var_27 = 0;
          var_28 = matches.w[0];
          var_30 = matches.w[2];
          var_29 = matches.w[1];
          if (var_7 != 0x1ff) {
LAB_0011485e:
            var_31 = d->states[var_11].context;
            var_28 = matches.w[0];
            var_30 = matches.w[2];
            var_29 = matches.w[1];
            var_12 = matches.w[3];
            if (((int)var_7 >> 6 & (type_4)var_31 & 7) == 0) {
              var_28 = matches.w[0] & ~(d->syntax).newline.w[0];
              var_29 = matches.w[1] & ~(d->syntax).newline.w[1];
              matches.w[1] = var_29;
              matches.w[0] = var_28;
              var_30 = matches.w[2] & ~(d->syntax).newline.w[2];
              var_12 = matches.w[3] & ~(d->syntax).newline.w[3];
              matches.w[3] = var_12;
              matches.w[2] = var_30;
            }
            if (((int)var_7 >> 3 & (type_4)var_31 & 7) == 0) {
              var_28 = var_28 & ~(d->syntax).letters.w[0];
              var_29 = var_29 & ~(d->syntax).letters.w[1];
              matches.w[1] = var_29;
              matches.w[0] = var_28;
              var_30 = var_30 & ~(d->syntax).letters.w[2];
              var_12 = var_12 & ~(d->syntax).letters.w[3];
              matches.w[3] = var_12;
              matches.w[2] = var_30;
            }
            if ((var_7 & var_31 & 7) == 0) {
              var_28 = var_28 & ((d->syntax).letters.w[0] | (d->syntax).newline.w[0]);
              var_29 = var_29 & ((d->syntax).letters.w[1] | (d->syntax).newline.w[1]);
              var_30 = var_30 & ((d->syntax).letters.w[2] | (d->syntax).newline.w[2]);
              matches.w[1] = var_29;
              matches.w[0] = var_28;
              var_12 = var_12 & ((d->syntax).letters.w[3] | (d->syntax).newline.w[3]);
              matches.w[3] = var_12;
              matches.w[2] = var_30;
            }
            if (((var_28 == 0 && var_29 == 0) && var_30 == 0) && var_12 == 0) goto LAB_0011435a;
            if ((matches.w[var_8] & var_9) != 0) goto LAB_0011445b;
          }
        }
        var_33 = (type_4)var_30;
        var_34 = (type_4)(var_30 >> 0x20);
        var_15 = var_15 + 1;
        var_32 = var_32 + 1;
        label.w[2]._0_4_ = ~var_33 & (type_4)label.w[2];
        label.w[2]._4_4_ = ~var_34 & label.w[2]._4_4_;
        label.w[3]._0_4_ = ~var_35 & (type_4)label.w[3];
        label.w[3]._4_4_ = ~var_36 & label.w[3]._4_4_;
        label.w[0] = ~var_28 & label.w[0];
        label.w[1] = ~var_29 & label.w[1];
        if (var_15 == var_3) goto LAB_001144c5;
      }
      matches.w[0] = 0;
      matches.w[1] = 0;
      matches.w[2] = 0;
      matches.w[3] = 0;
      matches.w[var_12 >> 6 & 0x3ffffff] = 1L << ((type_5)var_12 & 0x3f);
      if (var_12 != var_25) goto LAB_0011482f;
LAB_0011423a:
      var_28 = matches.w[0];
      var_30 = matches.w[2];
      var_29 = matches.w[1];
      if (var_7 != 0x1ff) {
        var_27 = 1;
        goto LAB_0011485e;
      }
LAB_00114267:
      var_37 = var_39.alloc;
      var_33 = (type_4)var_30;
      var_34 = (type_4)(var_30 >> 0x20);
      label.w[2]._0_4_ = var_33 & (type_4)label.w[2];
      label.w[2]._4_4_ = var_34 & label.w[2]._4_4_;
      label.w[3]._0_4_ = var_35 & (type_4)label.w[3];
      label.w[3]._4_4_ = var_36 & label.w[3]._4_4_;
      label.w[0] = var_28 & label.w[0];
      label.w[1] = var_29 & label.w[1];
      if (var_39.alloc <= var_39.nelem) {
        var_14 = (var_39.alloc >> 1) + var_39.alloc;
        if ((var_18(var_39.alloc >> 1,var_39.alloc)) ||
           (n = var_14 * 0x10, var_19((long)n) != var_19(var_14) * var_19(0x10))) {
          var_14 = 0x7ffffffffffffff;
          n = 0x7ffffffffffffff0;
        }
        else if ((long)n < 0x80) {
          n = 0x80;
          var_14 = 8;
        }
        if (var_39.elems == (type_9 *)0x0) {
          var_39.alloc = 0;
        }
        if ((var_14 == var_37 || var_14 - var_37 < 0) &&
           ((var_14 = var_37 + 1, var_18(var_37,1) ||
            (n = var_14 * 0x10, var_19((long)n) != var_19(var_14) * var_19(0x10)))))
        goto LAB_00114c1c;
        var_39.elems = (type_9 *)var_20(var_39.elems,n);
        var_39.alloc = var_14;
      }
      var_39.elems[var_39.nelem].index = sVar26;
      var_39.elems[var_39.nelem].constraint = (type_4)uVar6;
      var_39.nelem = var_39.nelem + 1;
LAB_0011435a:
      var_15 = var_15 + 1;
      var_32 = var_32 + 1;
    } while (var_15 != var_3);
  }
LAB_001144c5:
  var_9 = d->nleaves;
  if ((long)(var_9 << 4) < 0 || var_9 >> 0x3c != 0) goto LAB_00114c1c;
  tmp.elems = (type_9 *)var_5(var_9 << 4);
  tmp.nelem = 0;
  tmp.alloc = var_9;
  if (var_39.nelem < 1) {
    if (d->searchflag == false) {
      sVar16 = -1;
      sVar34 = -1;
      sVar17 = sVar16;
    }
    else {
      sVar34 = d->initstate_notbol;
      sVar16 = 0;
      sVar17 = (long)(d->min_trcount + L'\xffffffff');
    }
    goto LAB_001146d6;
  }
  if (d->searchflag != false) {
    if ((d->localeinfo).multibyte != false) {
      var_3 = 0;
      do {
        var_15 = var_3 + 1;
        if ((d->multibyte_prop[var_39.elems[var_3].index] & 1U) == 0) goto LAB_00114536;
        var_3 = var_15;
      } while (var_15 != var_39.nelem);
    }
    var_38(&d->states->elems,(type_12 *)&(d->states->elems).nelem,(type_4)&var_39,
                      (type_12 *)&var_39.nelem,(type_12 *)0xffffffff,&tmp);
    var_40((type_16 *)&tmp,(type_16 *)&tmp.nelem);
  }
LAB_00114536:
  var_9 = (d->syntax).newline.w[0];
  var_12 = (d->syntax).letters.w[0];
  var_8 = (type_4)((label.w[0] & var_9) != 0) << 2;
  if ((label.w[0] & var_12) != 0) {
    var_8 = var_8 | 2;
  }
  var_23 = (d->syntax).newline.w[1];
  if ((~(var_9 | var_12) & label.w[0]) != 0) {
    var_8 = var_8 | 1;
  }
  if ((label.w[1] & var_23) != 0) {
    var_8 = var_8 | 4;
  }
  var_9 = (d->syntax).letters.w[1];
  if ((label.w[1] & var_9) != 0) {
    var_8 = var_8 | 2;
  }
  var_12 = var_41(label.w[2]._4_4_,(type_4)label.w[2]);
  if ((~(var_23 | var_9) & label.w[1]) != 0) {
    var_8 = var_8 | 1;
  }
  var_9 = (d->syntax).newline.w[2];
  if ((var_9 & var_12) != 0) {
    var_8 = var_8 | 4;
  }
  var_23 = (d->syntax).letters.w[2];
  if ((var_23 & var_12) != 0) {
    var_8 = var_8 | 2;
  }
  var_42 = var_41(label.w[3]._4_4_,(type_4)label.w[3]);
  var_16 = (d->syntax).newline.w[3];
  if ((~(var_23 | var_9) & var_12) != 0) {
    var_8 = var_8 | 1;
  }
  if ((var_16 & var_42) != 0) {
    var_8 = var_8 | 4;
  }
  var_9 = (d->syntax).letters.w[3];
  if ((var_42 & var_9) != 0) {
    var_8 = var_8 | 2;
  }
  if ((~(var_16 | var_9) & var_42) == 0) {
    if (var_39.nelem != 0) goto LAB_0011464f;
    if (var_8 != 0) goto LAB_00114c0f;
    sVar16 = -1;
    sVar17 = -1;
    sVar34 = sVar16;
  }
  else {
    var_8 = var_8 | 1;
    if (var_39.nelem == 0) {
LAB_00114c0f:
      var_45 = 0;
      var_7 = 0;
      wVar25 = L'\a';
LAB_00114bf3:
      sVar34 = var_43(d,&var_39,wVar25);
    }
    else {
LAB_0011464f:
      var_44 = 0;
      var_32 = var_39.elems;
      do {
        psVar8 = &var_32->index;
        var_32 = var_32 + 1;
        var_44 = var_44 | d->separates[*psVar8];
      } while (var_39.elems + var_39.nelem != var_32);
      sVar34 = -1;
      var_45 = var_44 & var_8 & 2;
      var_7 = var_44 & var_8 & 4;
      if ((~var_44 & var_8) != 0) {
        wVar25 = var_44 ^ 7;
        goto LAB_00114bf3;
      }
    }
    sVar16 = sVar34;
    if (var_7 != 0) {
      sVar16 = var_43(d,&var_39,L'\x04');
    }
    sVar17 = sVar34;
    if (var_45 != 0) {
      sVar17 = var_43(d,&var_39,L'\x02');
    }
  }
  var_46(d);
LAB_001146d6:
  var_9 = 0;
  do {
    while ((label.w[var_9 >> 6 & 0x3ffffff] >> (var_9 & 0x3f) & 1) == 0) {
LAB_001146ed:
      var_9 = var_9 + 1;
      if (var_9 == 0x100) goto LAB_00114728;
    }
    var_47 = (d->syntax).sbit[var_9];
    if (var_47 != '\x02') {
      sVar18 = sVar16;
      if (var_47 != '\x04') {
        sVar18 = sVar34;
      }
      var_2[var_9] = sVar18;
      goto LAB_001146ed;
    }
    var_2[var_9] = sVar17;
    var_9 = var_9 + 1;
  } while (var_9 != 0x100);
LAB_00114728:
  var_4(var_39.elems);
  var_4(p_00);
  var_4(tmp.elems);
  var_27 = (d->syntax).eolbyte;
  if ((label.w[var_27 >> 6] >> (var_27 & 0x3f) & 1) != 0) {
    d->newlines[var_11] = var_2[var_27];
    var_2[(d->syntax).eolbyte] = -1;
  }
  if (var_48 != *(long *)(var_1 + 0x28)) {
                    /* WARNING: Subroutine does not return */
    var_49();
  }
  return var_2[var_25];
}


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

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 MASKED(long param_1,long param_2,byte param_3)

{
  char cVar1;
  byte bVar2;
  ushort uVar3;
  undefined8 uVar4;
  undefined8 uVar5;
  ulong uVar6;
  long lVar7;
  long lVar8;
  byte *pbVar9;
  ulong *__src;
  ulong *puVar10;
  long lVar11;
  ulong uVar12;
  ulong uVar13;
  undefined1 (*pauVar14) [16];
  long *plVar15;
  undefined8 uVar16;
  undefined8 *puVar17;
  byte bVar18;
  uint uVar19;
  ulong *puVar20;
  long lVar21;
  ulong uVar22;
  uint uVar23;
  int iVar24;
  long lVar25;
  long lVar26;
  ulong uVar27;
  long lVar28;
  ulong uVar29;
  ulong uVar30;
  uint uVar31;
  ulong uVar32;
  uint uVar33;
  long in_FS_OFFSET;
  undefined1 auVar34 [16];
  undefined1 auVar35 [16];
  ulong local_100;
  long local_f8;
  undefined8 *local_e0;
  long *local_c8;
  long local_c0;
  ulong local_b8;
  void *local_a8;
  undefined8 local_a0;
  ulong local_98;
  undefined1 local_88 [16];
  undefined1 local_78 [16];
  undefined1 local_68 [16];
  undefined1 local_58 [16];
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  lVar7 = param_1 * 0x50;
  lVar8 = *(long *)(param_2 + 0x3a0);
  lVar21 = lVar8;
  if (*(short *)(*(long *)(param_2 + 0x358) + 0x22 + lVar7) != 0) {
    lVar21 = *(long *)(param_2 + 0x3a8);
  }
  plVar15 = (long *)(lVar21 + param_1 * 8);
  local_e0 = (undefined8 *)*plVar15;
  if (local_e0 == (undefined8 *)0x0) {
    if (*(int *)(param_2 + 0x398) < 0x400) {
      iVar24 = *(int *)(param_2 + 0x398) + 1;
    }
    else {
      lVar21 = (long)*(int *)(param_2 + 0x39c);
      if (lVar21 < *(long *)(param_2 + 0x390)) {
        do {
          free(*(void **)(lVar8 + lVar21 * 8));
          free(*(void **)(*(long *)(param_2 + 0x3a8) + lVar21 * 8));
          *(undefined8 *)(*(long *)(param_2 + 0x3a8) + lVar21 * 8) = 0;
          lVar8 = *(long *)(param_2 + 0x3a0);
          *(undefined8 *)(lVar8 + lVar21 * 8) = 0;
          lVar21 = lVar21 + 1;
        } while (lVar21 < *(long *)(param_2 + 0x390));
      }
      iVar24 = 1;
    }
    *(int *)(param_2 + 0x398) = iVar24;
    local_e0 = (undefined8 *)FUN_00120ce0(0x800);
    uVar5 = _UNK_00128298;
    uVar4 = _DAT_00128290;
    *plVar15 = (long)local_e0;
    puVar17 = local_e0;
    do {
      *puVar17 = uVar4;
      puVar17[1] = uVar5;
      puVar17 = puVar17 + 2;
    } while (local_e0 + 0x100 != puVar17);
  }
  *(undefined1 *)(*(long *)(param_2 + 0x3b0) + param_1) = 0;
  lVar8 = *(long *)(param_2 + 0x358) + lVar7;
  bVar18 = *(byte *)(lVar8 + 0x20);
  uVar3 = *(ushort *)(lVar8 + 0x22);
  uVar23 = (uint)uVar3;
  if (((int)uVar23 >> 6 & (uint)bVar18 & 7) != 0) {
    pbVar9 = (byte *)(*(long *)(param_2 + 0x3b0) + param_1);
    *pbVar9 = *pbVar9 | 4;
    lVar8 = *(long *)(param_2 + 0x358) + lVar7;
    bVar18 = *(byte *)(lVar8 + 0x20);
    uVar3 = *(ushort *)(lVar8 + 0x22);
    uVar23 = (uint)uVar3;
  }
  if (((int)(uint)uVar3 >> 3 & (uint)bVar18 & 7) != 0) {
    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));
    *pbVar9 = *pbVar9 | 2;
    lVar8 = lVar7 + *(long *)(param_2 + 0x358);
    bVar18 = *(byte *)(lVar8 + 0x20);
    uVar23 = (uint)*(ushort *)(lVar8 + 0x22);
  }
  if ((uVar23 & 7 & (uint)bVar18) != 0) {
    pbVar9 = (byte *)(param_1 + *(long *)(param_2 + 0x3b0));
    *pbVar9 = *pbVar9 | 1;
  }
  uVar13 = *(ulong *)(param_2 + 0x300);
  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) {
LAB_00114c1c:
                    /* WARNING: Subroutine does not return */
    FUN_00120e70();
  }
  __src = (ulong *)FUN_00120ce0();
  local_f8 = lVar7 + *(long *)(param_2 + 0x358);
  uVar22 = *(ulong *)(local_f8 + 0x10);
  if (uVar22 == 0) {
    lVar8 = 0;
  }
  else {
    local_100 = 0;
    lVar26 = *(long *)(local_f8 + 8);
    lVar8 = 0;
    lVar21 = *(long *)(param_2 + 0x370);
    do {
      uVar32 = 0;
      plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);
      if (plVar15[1] != 0) {
        do {
          puVar10 = (ulong *)(uVar32 * 0x10 + *plVar15);
          uVar22 = *puVar10;
          uVar23 = (uint)puVar10[1];
          puVar10 = __src;
          if (lVar8 == 0) {
            if ((long)uVar13 < 1) {
              lVar25 = 0;
              goto LAB_00114026;
            }
          }
          else {
            lVar25 = 0;
            lVar28 = lVar8;
            do {
              while( true ) {
                lVar11 = lVar28 + lVar25 >> 1;
                puVar20 = __src + lVar11 * 2;
                uVar12 = *puVar20;
                if (uVar12 <= uVar22 && uVar22 != uVar12) break;
                if (uVar22 == uVar12) {
                  *(uint *)(puVar20 + 1) = (uint)puVar20[1] | uVar23;
                  goto LAB_00114119;
                }
                lVar28 = lVar11;
                if (lVar11 <= lVar25) goto LAB_0011401d;
              }
              lVar25 = lVar11 + 1;
            } while (lVar25 < lVar28);
LAB_0011401d:
            uVar12 = uVar13;
            if ((long)uVar13 <= lVar8) {
LAB_00114026:
              uVar12 = ((long)uVar13 >> 1) + uVar13;
              if ((SCARRY8((long)uVar13 >> 1,uVar13)) ||
                 (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10)))
              {
                lVar21 = 0x7ffffffffffffff0;
                uVar12 = 0x7ffffffffffffff;
              }
              else if (lVar21 < 0x80) {
                uVar12 = 8;
                lVar21 = 0x80;
              }
              if (((long)(uVar12 - uVar13) < 1) &&
                 ((uVar12 = uVar13 + 1, SCARRY8(uVar13,1) ||
                  (lVar21 = uVar12 * 0x10, SEXT816(lVar21) != SEXT816((long)uVar12) * SEXT816(0x10))
                  ))) goto LAB_00114c1c;
              puVar10 = (ulong *)FUN_00120d00(__src,lVar21);
              lVar21 = *(long *)(param_2 + 0x370);
              local_f8 = lVar7 + *(long *)(param_2 + 0x358);
              lVar26 = *(long *)(local_f8 + 8);
            }
            __src = puVar10 + lVar25 * 2;
            uVar13 = uVar12;
            if (lVar25 < lVar8) {
              memmove(puVar10 + lVar25 * 2 + 2,__src,(lVar8 - lVar25) * 0x10);
            }
          }
          *__src = uVar22;
          lVar8 = lVar8 + 1;
          *(uint *)(__src + 1) = uVar23;
          __src = puVar10;
LAB_00114119:
          uVar32 = uVar32 + 1;
          plVar15 = (long *)(lVar21 + *(long *)(lVar26 + local_100 * 0x10) * 0x18);
        } while (uVar32 < (ulong)plVar15[1]);
        uVar22 = *(ulong *)(local_f8 + 0x10);
      }
      local_100 = local_100 + 1;
    } while (local_100 < uVar22);
  }
  uVar13 = *(ulong *)(param_2 + 0x300);
  if (((long)(uVar13 << 4) < 0) || (uVar13 >> 0x3c != 0)) goto LAB_00114c1c;
  local_c8 = (long *)FUN_00120ce0();
  local_88._8_4_ = 0xffffffff;
  local_88._0_8_ = 0xffffffffffffffff;
  local_88._12_4_ = 0xffffffff;
  local_c0 = 0;
  local_78 = local_88;
  local_b8 = uVar13;
  if (lVar8 != 0) {
    lVar21 = 0;
    uVar23 = (uint)(param_3 >> 6);
    uVar13 = 1L << (param_3 & 0x3f);
    puVar10 = __src;
    do {
      while( true ) {
        uVar22 = *puVar10;
        uVar32 = puVar10[1];
        uVar19 = (uint)puVar10[1];
        uVar12 = *(ulong *)(*(long *)(param_2 + 0x2e0) + uVar22 * 8);
        if (uVar12 < 0x100) break;
        if ((long)uVar12 < 0x114) {
          if (uVar12 != 0x10a) goto LAB_0011435a;
          lVar26 = lVar7 + *(long *)(param_2 + 0x358);
          pauVar14 = (undefined1 (*) [16])
                     (*(long *)(param_2 + 0x268) * 0x20 + *(long *)(param_2 + 0x250));
          local_68 = *pauVar14;
          local_58 = pauVar14[1];
          bVar18 = (byte)(*(ulong *)(local_68 + (ulong)uVar23 * 8) >> (param_3 & 0x3f)) & 1;
          if ((*(byte *)(lVar26 + 0x20) & uVar19 & 7) != 0) {
            if (*(long *)(lVar26 + 0x38) == 0) {
              uVar16 = FUN_00120ce0(0x10);
              uVar5 = _UNK_001282a8;
              uVar4 = _DAT_001282a0;
              *(undefined8 *)(lVar26 + 0x30) = uVar16;
              *(undefined8 *)(lVar26 + 0x38) = uVar4;
              *(undefined8 *)(lVar26 + 0x40) = uVar5;
              lVar26 = lVar7 + *(long *)(param_2 + 0x358);
            }
            FUN_00112200(uVar22,uVar32,lVar26 + 0x30);
          }
          uVar12 = local_68._0_8_;
          uVar27 = local_58._0_8_;
          uVar29 = local_68._8_8_;
          uVar30 = local_58._8_8_;
          if (uVar19 != 0x1ff) goto LAB_0011485e;
LAB_0011445b:
          if (bVar18 != 0) goto LAB_00114267;
        }
        else {
          lVar26 = uVar12 * 0x20 + *(long *)(param_2 + 0x250);
          local_68 = *(undefined1 (*) [16])(lVar26 + -0x2280);
          local_58 = *(undefined1 (*) [16])(lVar26 + -0x2270);
          if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011423a;
LAB_0011482f:
          bVar18 = 0;
          uVar12 = local_68._0_8_;
          uVar27 = local_58._0_8_;
          uVar29 = local_68._8_8_;
          uVar30 = local_58._8_8_;
          if (uVar19 != 0x1ff) {
LAB_0011485e:
            bVar2 = *(byte *)(*(long *)(param_2 + 0x358) + 0x20 + lVar7);
            uVar12 = local_68._0_8_;
            uVar27 = local_58._0_8_;
            uVar29 = local_68._8_8_;
            uVar30 = local_58._8_8_;
            if (((int)uVar19 >> 6 & (uint)bVar2 & 7) == 0) {
              uVar12 = local_68._0_8_ & ~*(ulong *)(param_2 + 0x230);
              uVar29 = local_68._8_8_ & ~*(ulong *)(param_2 + 0x238);
              local_68._8_8_ = uVar29;
              local_68._0_8_ = uVar12;
              uVar27 = local_58._0_8_ & ~*(ulong *)(param_2 + 0x240);
              uVar30 = local_58._8_8_ & ~*(ulong *)(param_2 + 0x248);
              local_58._8_8_ = uVar30;
              local_58._0_8_ = uVar27;
            }
            if (((int)uVar19 >> 3 & (uint)bVar2 & 7) == 0) {
              uVar12 = uVar12 & ~*(ulong *)(param_2 + 0x210);
              uVar29 = uVar29 & ~*(ulong *)(param_2 + 0x218);
              local_68._8_8_ = uVar29;
              local_68._0_8_ = uVar12;
              uVar27 = uVar27 & ~*(ulong *)(param_2 + 0x220);
              uVar30 = uVar30 & ~*(ulong *)(param_2 + 0x228);
              local_58._8_8_ = uVar30;
              local_58._0_8_ = uVar27;
            }
            if ((uVar19 & bVar2 & 7) == 0) {
              uVar12 = uVar12 & (*(ulong *)(param_2 + 0x210) | *(ulong *)(param_2 + 0x230));
              uVar29 = uVar29 & (*(ulong *)(param_2 + 0x218) | *(ulong *)(param_2 + 0x238));
              uVar27 = uVar27 & (*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240));
              local_68._8_8_ = uVar29;
              local_68._0_8_ = uVar12;
              uVar30 = uVar30 & (*(ulong *)(param_2 + 0x228) | *(ulong *)(param_2 + 0x248));
              local_58._8_8_ = uVar30;
              local_58._0_8_ = uVar27;
            }
            if (((uVar12 == 0 && uVar29 == 0) && uVar27 == 0) && uVar30 == 0) goto LAB_0011435a;
            if ((*(ulong *)(local_68 + (ulong)uVar23 * 8) & uVar13) != 0) goto LAB_0011445b;
          }
        }
        lVar21 = lVar21 + 1;
        puVar10 = puVar10 + 2;
        auVar35._8_8_ = uVar30;
        auVar35._0_8_ = uVar27;
        local_78 = ~auVar35 & local_78;
        local_88._8_8_ = ~uVar29 & local_88._8_8_;
        local_88._0_8_ = ~uVar12 & local_88._0_8_;
        if (lVar21 == lVar8) goto LAB_001144c5;
      }
      local_68 = (undefined1  [16])0x0;
      local_58 = (undefined1  [16])0x0;
      *(long *)(local_68 + (uVar12 >> 6 & 0x3ffffff) * 8) = 1L << ((byte)uVar12 & 0x3f);
      if (uVar12 != param_3) goto LAB_0011482f;
LAB_0011423a:
      uVar12 = local_68._0_8_;
      uVar27 = local_58._0_8_;
      uVar29 = local_68._8_8_;
      uVar30 = local_58._8_8_;
      if (uVar19 != 0x1ff) {
        bVar18 = 1;
        goto LAB_0011485e;
      }
LAB_00114267:
      uVar6 = local_b8;
      auVar34._8_8_ = uVar30;
      auVar34._0_8_ = uVar27;
      local_78 = auVar34 & local_78;
      local_88._8_8_ = uVar29 & local_88._8_8_;
      local_88._0_8_ = uVar12 & local_88._0_8_;
      if ((long)local_b8 <= local_c0) {
        uVar12 = ((long)local_b8 >> 1) + local_b8;
        if ((SCARRY8((long)local_b8 >> 1,local_b8)) ||
           (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10))) {
          uVar12 = 0x7ffffffffffffff;
          lVar26 = 0x7ffffffffffffff0;
        }
        else if (lVar26 < 0x80) {
          lVar26 = 0x80;
          uVar12 = 8;
        }
        if (local_c8 == (long *)0x0) {
          local_b8 = 0;
        }
        if (((long)(uVar12 - uVar6) < 1) &&
           ((uVar12 = uVar6 + 1, SCARRY8(uVar6,1) ||
            (lVar26 = uVar12 * 0x10, SEXT816(lVar26) != SEXT816((long)uVar12) * SEXT816(0x10)))))
        goto LAB_00114c1c;
        local_c8 = (long *)FUN_00120d00(local_c8,lVar26);
        local_b8 = uVar12;
      }
      local_c8[local_c0 * 2] = uVar22;
      *(int *)(local_c8 + local_c0 * 2 + 1) = (int)uVar32;
      local_c0 = local_c0 + 1;
LAB_0011435a:
      lVar21 = lVar21 + 1;
      puVar10 = puVar10 + 2;
    } while (lVar21 != lVar8);
  }
LAB_001144c5:
  uVar13 = *(ulong *)(param_2 + 0x300);
  if ((long)(uVar13 << 4) < 0 || uVar13 >> 0x3c != 0) goto LAB_00114c1c;
  local_a8 = (void *)FUN_00120ce0();
  local_a0 = 0;
  local_98 = uVar13;
  if (local_c0 < 1) {
    if (*(char *)(param_2 + 0x378) == '\0') {
      lVar21 = -1;
      lVar8 = -1;
      lVar7 = lVar21;
    }
    else {
      lVar8 = *(long *)(param_2 + 0x3c0);
      lVar21 = 0;
      lVar7 = (long)(*(int *)(param_2 + 0x39c) + -1);
    }
    goto LAB_001146d6;
  }
  if (*(char *)(param_2 + 0x378) != '\0') {
    if (*(char *)(param_2 + 0x3fc) != '\0') {
      lVar8 = 0;
      do {
        lVar21 = lVar8 + 1;
        if ((*(byte *)(*(long *)(param_2 + 0x348) + local_c8[lVar8 * 2]) & 1) == 0)
        goto LAB_00114536;
        lVar8 = lVar21;
      } while (lVar21 != local_c0);
    }
    FUN_00112390(*(long *)(param_2 + 0x358) + 8,*(long *)(param_2 + 0x358) + 0x10,&local_c8,
                 &local_c0,0xffffffff,&local_a8);
    FUN_00111e00(&local_a8,&local_a0,&local_c8);
  }
LAB_00114536:
  uVar23 = (uint)((local_88._0_8_ & *(ulong *)(param_2 + 0x230)) != 0) << 2;
  if ((local_88._0_8_ & *(ulong *)(param_2 + 0x210)) != 0) {
    uVar23 = uVar23 | 2;
  }
  if ((~(*(ulong *)(param_2 + 0x230) | *(ulong *)(param_2 + 0x210)) & local_88._0_8_) != 0) {
    uVar23 = uVar23 | 1;
  }
  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x238)) != 0) {
    uVar23 = uVar23 | 4;
  }
  if ((local_88._8_8_ & *(ulong *)(param_2 + 0x218)) != 0) {
    uVar23 = uVar23 | 2;
  }
  if ((~(*(ulong *)(param_2 + 0x238) | *(ulong *)(param_2 + 0x218)) & local_88._8_8_) != 0) {
    uVar23 = uVar23 | 1;
  }
  if ((*(ulong *)(param_2 + 0x240) & local_78._0_8_) != 0) {
    uVar23 = uVar23 | 4;
  }
  if ((*(ulong *)(param_2 + 0x220) & local_78._0_8_) != 0) {
    uVar23 = uVar23 | 2;
  }
  if ((~(*(ulong *)(param_2 + 0x220) | *(ulong *)(param_2 + 0x240)) & local_78._0_8_) != 0) {
    uVar23 = uVar23 | 1;
  }
  if ((*(ulong *)(param_2 + 0x248) & local_78._8_8_) != 0) {
    uVar23 = uVar23 | 4;
  }
  if ((local_78._8_8_ & *(ulong *)(param_2 + 0x228)) != 0) {
    uVar23 = uVar23 | 2;
  }
  if ((~(*(ulong *)(param_2 + 0x248) | *(ulong *)(param_2 + 0x228)) & local_78._8_8_) == 0) {
    if (local_c0 != 0) goto LAB_0011464f;
    if (uVar23 != 0) goto LAB_00114c0f;
    lVar21 = -1;
    lVar7 = -1;
    lVar8 = lVar21;
  }
  else {
    uVar23 = uVar23 | 1;
    if (local_c0 == 0) {
LAB_00114c0f:
      uVar33 = 0;
      uVar31 = 0;
      uVar19 = 7;
LAB_00114bf3:
      lVar8 = FUN_00112550(param_2,&local_c8,uVar19);
    }
    else {
LAB_0011464f:
      uVar19 = 0;
      plVar15 = local_c8;
      do {
        lVar8 = *plVar15;
        plVar15 = plVar15 + 2;
        uVar19 = uVar19 | *(uint *)(*(long *)(param_2 + 0x388) + lVar8 * 4);
      } while (local_c8 + local_c0 * 2 != plVar15);
      lVar8 = -1;
      uVar33 = uVar19 & uVar23 & 2;
      uVar31 = uVar19 & uVar23 & 4;
      if ((~uVar19 & uVar23) != 0) {
        uVar19 = uVar19 ^ 7;
        goto LAB_00114bf3;
      }
    }
    lVar21 = lVar8;
    if (uVar31 != 0) {
      lVar21 = FUN_00112550(param_2,&local_c8,4);
    }
    lVar7 = lVar8;
    if (uVar33 != 0) {
      lVar7 = FUN_00112550(param_2,&local_c8,2);
    }
  }
  FUN_00111ef0(param_2);
LAB_001146d6:
  uVar13 = 0;
  do {
    while ((*(ulong *)(local_88 + (uVar13 >> 6 & 0x3ffffff) * 8) >> (uVar13 & 0x3f) & 1) == 0) {
LAB_001146ed:
      uVar13 = uVar13 + 1;
      if (uVar13 == 0x100) goto LAB_00114728;
    }
    cVar1 = *(char *)(param_2 + 0xc + uVar13);
    if (cVar1 != '\x02') {
      lVar26 = lVar21;
      if (cVar1 != '\x04') {
        lVar26 = lVar8;
      }
      local_e0[uVar13] = lVar26;
      goto LAB_001146ed;
    }
    local_e0[uVar13] = lVar7;
    uVar13 = uVar13 + 1;
  } while (uVar13 != 0x100);
LAB_00114728:
  free(local_c8);
  free(__src);
  free(local_a8);
  bVar18 = *(byte *)(param_2 + 0xb);
  if ((*(ulong *)(local_88 + (ulong)(bVar18 >> 6) * 8) >> (bVar18 & 0x3f) & 1) != 0) {
    *(undefined8 *)(*(long *)(param_2 + 0x3b8) + param_1 * 8) = local_e0[bVar18];
    local_e0[*(byte *)(param_2 + 0xb)] = 0xffffffffffffffff;
  }
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return local_e0[param_3];
}

